提交 c9dc5daa 作者: 张小凤

webDevice

上级 fdb72674
package com.mmc.pms.common;
/**
* @Author small
* @Date 2023/5/15 14:29
* @Version 1.0
*/
public interface BaseErrorInfoInterface {
/**
* 错误码
*
* @return
*/
String getResultCode();
/**
* 错误描述
*
* @return
*/
String getResultMsg();
}
package com.mmc.pms.common;
import com.alibaba.fastjson2.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author small
* @Date 2023/5/15 14:28
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.result.ResultBody", description = "请求响应体")
public class ResultBody<T> implements Serializable {
private static final long serialVersionUID = 6341937455634693363L;
/**
* 响应代码
*/
@ApiModelProperty(value = "响应代码")
private String code;
/**
* 响应消息
*/
@ApiModelProperty(value = "响应消息")
private String message;
/**
* 响应结果
*/
@ApiModelProperty(value = "响应结果")
private T result;
public ResultBody(BaseErrorInfoInterface errorInfo) {
this.code = errorInfo.getResultCode();
this.message = errorInfo.getResultMsg();
}
/**
* 成功
*
* @return
*/
public static ResultBody success() {
return success(null);
}
/**
* 成功
*
* @param data
* @return
*/
public static <T> ResultBody success(T data) {
ResultBody rb = new ResultBody();
rb.setCode(ResultEnum.SUCCESS.getResultCode());
rb.setMessage(ResultEnum.SUCCESS.getResultMsg());
rb.setResult(data);
return rb;
}
/**
* 成功
*
* **/
public static ResultBody success1(ResultEnum enums){
ResultBody rb = new ResultBody();
rb.setCode("200");
rb.setMessage(enums.getResultMsg());
rb.setResult(null);
return rb;
}
public void buildSuccess() {
this.setCode(ResultEnum.SUCCESS.getResultCode());
this.setMessage(ResultEnum.SUCCESS.getResultMsg());
}
/**
* 失败
*/
public static ResultBody error(BaseErrorInfoInterface errorInfo) {
ResultBody rb = new ResultBody();
rb.setCode(errorInfo.getResultCode());
rb.setMessage(errorInfo.getResultMsg());
rb.setResult(null);
return rb;
}
/**
* 失败
*/
public static ResultBody error(String code, String message) {
ResultBody rb = new ResultBody();
rb.setCode(code);
rb.setMessage(message);
rb.setResult(null);
return rb;
}
/**
* 失败
*/
public static ResultBody error(ResultEnum enums) {
ResultBody rb = new ResultBody();
rb.setCode(enums.getResultCode());
rb.setMessage(enums.getResultMsg());
rb.setResult(null);
return rb;
}
/**
* 失败
*/
public static ResultBody error(String message) {
ResultBody rb = new ResultBody();
rb.setCode("-1");
rb.setMessage(message);
rb.setResult(null);
return rb;
}
/**
* 失败
*/
public static ResultBody error(ResultEnum enums, Object data) {
ResultBody rb = new ResultBody();
rb.setCode(enums.getResultCode());
rb.setMessage(enums.getResultMsg());
rb.setResult(data);
return rb;
}
public static boolean isSuccess(ResultBody res) {
return res.getCode().equals(ResultEnum.SUCCESS.getResultCode());
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
package com.mmc.pms.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author small
* @Date 2023/5/15 13:24
* @Version 1.0
*/
@Api(tags = {"小程序设备租赁-接口"})
@RestController
@RequestMapping("/appDevice")
public class MiniProgramDeviceController {
}
package com.mmc.pms.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author small
* @Date 2023/5/15 13:23
* @Version 1.0
*/
@Api(tags = {"小程序产品商城-接口"})
@RestController
@RequestMapping("/AppProductMall")
public class MiniProgramProductMallController {
}
package com.mmc.pms.controller;
import com.mmc.pms.common.ResultBody;
import com.mmc.pms.model.vo.LeaseVo;
import com.mmc.pms.service.WebDeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @Author small @Date 2023/5/15 13:25 @Version 1.0
*/
@Api(tags = {"web设备租赁-接口"})
@RestController
@RequestMapping("/webProductMall")
public class WebDeviceController {
@Autowired private WebDeviceService webDeviceService;
@ApiOperation(value = "获取到二级地区信息——设备租赁/产品商城接口共用")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/getSecondDistrictInfo")
public ResultBody getSecondDistrictInfo() {
return webDeviceService.listSecondDistrict();
}
@ApiOperation("设备类目")
@GetMapping("/category")
public ResultBody category() {
return webDeviceService.category();
}
@ApiOperation("品牌")
@GetMapping("/brand")
public ResultBody brand() {
return webDeviceService.brand();
}
@ApiOperation("型号")
@GetMapping("/model")
public ResultBody model() {
return webDeviceService.model();
}
@ApiOperation(value = "设备列表筛选")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/deviceList")
public ResultBody deviceList(
@RequestParam(value = "districtId", required = false) Integer districtId,
@RequestParam(value = "categoryId", required = false) Integer categoryId,
@RequestParam(value = "brandId", required = false) Integer brandId,
@RequestParam(value = "modelId", required = false) Integer modelId) {
return webDeviceService.deviceList(districtId, categoryId, brandId, modelId);
}
@ApiOperation(value = "立即租赁")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/update")
public ResultBody update(@RequestBody LeaseVo param) {
return webDeviceService.update(param);
}
}
package com.mmc.pms.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author small
* @Date 2023/5/15 13:24
* @Version 1.0
*/
@Api(tags = {"web产品商城-接口"})
@RestController
@RequestMapping("/userwechat/")
public class WebProductMallController {
}
package com.mmc.pms.dao;
import com.mmc.pms.entity.*;
import com.mmc.pms.model.vo.LeaseVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Author small @Date 2023/5/15 14:35 @Version 1.0
*/
@Mapper
public interface WebDeviceDao {
List<DistrictDO> listSecondDistrict();
List<DeviceCategory> category();
List<Brand> brand();
List<Model> model();
List<DeviceListDO> deviceList(
Integer districtId, Integer categoryId, Integer brandId, Integer modelId);
int update(LeaseVo param);
InventoryDO findInventory(Integer inventoryId);
}
package com.mmc.pms.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author small @Date 2023/5/15 15:22 @Version 1.0
*/
@Data
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("添加时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime addtime;
@ApiModelProperty("最近一次编辑时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatetime;
@ApiModelProperty("1删除")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@TableLogic
private Integer deleted;
}
package com.mmc.pms.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mmc.pms.model.dto.BrandDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author small @Date 2023/5/15 15:34 @Version 1.0
*/
@Data
@ApiModel("品牌")
@TableName("brand")
public class Brand extends BaseEntity {
@ApiModelProperty("1")
private Integer id;
@ApiModelProperty("名称")
private String name;
public BrandDTO brandDTO() {
return BrandDTO.builder().id(this.id).name(this.name).build();
}
}
package com.mmc.pms.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mmc.pms.model.dto.DeviceCategoryDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author small @Date 2023/5/15 15:03 @Version 1.0
*/
@Data
@TableName("device_category")
@ApiModel("设备类目")
public class DeviceCategory extends BaseEntity {
@ApiModelProperty("1")
private Integer id;
@ApiModelProperty("类目名称")
private String name;
public DeviceCategoryDTO deviceCategory() {
return DeviceCategoryDTO.builder().id(this.id).name(this.name).build();
}
}
package com.mmc.pms.entity;
import com.mmc.pms.model.dto.DeviceListDTO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @Author small @Date 2023/5/15 17:04 @Version 1.0
*/
@Data
@ApiModel("设备列表")
public class DeviceListDO {
private Integer id;
private String deviceName;
private String imageUrl;
private String price;
private String brandName;
private String sysDistrictName;
private String modelName;
private String deviceCategoryName;
private Integer residueCount;
private Integer inventoryId;
public DeviceListDTO deviceListDTO() {
return DeviceListDTO.builder()
.id(this.id)
.deviceName(this.deviceName)
.imageUrl(this.imageUrl)
.price(this.price)
.brandName(this.brandName)
.sysDistrictName(this.sysDistrictName)
.modelName(this.modelName)
.deviceCategoryName(this.deviceCategoryName)
.residueCount(this.residueCount)
.inventoryId(this.inventoryId)
.build();
}
}
package com.mmc.pms.entity;
import com.mmc.pms.model.dto.DistrictInfoDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author small
* @Date 2023/5/15 14:33
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DistrictDO implements Serializable {
private static final long serialVersionUID = 4345895963086642848L;
private Integer id;
private String name;
private Integer level;
private Integer pid;
private List<DistrictDO> childInfo;
public DistrictInfoDTO builderDistrictInfoDTO(){
return DistrictInfoDTO.builder()
.id(this.id)
.name(this.name)
.level(this.level)
.pid(this.pid)
.childInfo(CollectionUtils.isEmpty(this.childInfo)?null:this.childInfo.stream().map(d->{return d.builderDistrictInfoDTO();}).collect(Collectors.toList()))
.build();
}
}
package com.mmc.pms.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small @Date 2023/5/15 18:16 @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InventoryDO {
private static final long serialVersionUID = 4345895963086642848L;
private Integer id;
private Integer allCount;
private Integer residueCount;
}
package com.mmc.pms.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mmc.pms.model.dto.ModelDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author small @Date 2023/5/15 16:12 @Version 1.0
*/
@Data
@TableName("model")
@ApiModel("型号")
public class Model {
@ApiModelProperty("1")
private Integer id;
@ApiModelProperty("型号名称")
private String name;
public ModelDTO modelDTO() {
return ModelDTO.builder().id(this.id).name(this.name).build();
}
}
package com.mmc.pms.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small @Date 2023/5/15 16:07 @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BrandDTO {
@ApiModelProperty("1")
private Integer id;
@ApiModelProperty("品牌名称")
private String name;
}
package com.mmc.pms.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small @Date 2023/5/15 16:02 @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceCategoryDTO {
@ApiModelProperty("1")
private Integer id;
@ApiModelProperty("类目名称")
private String name;
}
package com.mmc.pms.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small @Date 2023/5/15 17:06 @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceListDTO {
@ApiModelProperty(name = "设备id")
private Integer id;
@ApiModelProperty(name = "设备名称")
private String deviceName;
@ApiModelProperty(name = "设备图片地址")
private String imageUrl;
@ApiModelProperty("价格")
private String price;
@ApiModelProperty("品牌名称")
private String brandName;
@ApiModelProperty("地域名称")
private String sysDistrictName;
@ApiModelProperty("型号名称")
private String modelName;
@ApiModelProperty("类目名称")
private String deviceCategoryName;
@ApiModelProperty("剩余库存数量")
private Integer residueCount;
@ApiModelProperty("库存id")
private Integer inventoryId;
}
package com.mmc.pms.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author small
* @Date 2023/5/15 14:34
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DistrictInfoDTO implements Serializable {
private static final long serialVersionUID = 8352745384449903203L;
@ApiModelProperty(value = "地区id")
private Integer id;
@ApiModelProperty(value = "地区名称")
private String name;
@ApiModelProperty(value = "地区等级")
private Integer level;
@ApiModelProperty(value = "父id")
private Integer pid;
@ApiModelProperty(value = "地区下一级信息")
private List<DistrictInfoDTO> childInfo;
}
package com.mmc.pms.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small @Date 2023/5/15 16:13 @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ModelDTO {
@ApiModelProperty("1")
private Integer id;
@ApiModelProperty("类目名称")
private String name;
}
package com.mmc.pms.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
/**
* @Author small @Date 2023/5/15 18:03 @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.pms.model.vo.LeaseVo", description = "立即租赁")
public class LeaseVo {
private static final long serialVersionUID = -8917940296555539559L;
@ApiModelProperty(value = "设备id")
private Integer id;
@ApiModelProperty(value = "租期天数开始")
private Integer startDay;
@ApiModelProperty(value = "租期天数结束")
private Integer endDay;
@ApiModelProperty(value = "库存使用")
@NotBlank
private Integer inventoryUsage;
@ApiModelProperty(value = "库存id")
private Integer inventoryId;
}
package com.mmc.pms.service.Impl;
import com.mmc.pms.common.ResultBody;
import com.mmc.pms.dao.WebDeviceDao;
import com.mmc.pms.entity.*;
import com.mmc.pms.model.dto.*;
import com.mmc.pms.model.vo.LeaseVo;
import com.mmc.pms.service.WebDeviceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author small @Date 2023/5/15 14:32 @Version 1.0
*/
@Service
public class WebDeviceServiceImpl implements WebDeviceService {
@Autowired WebDeviceDao webDeviceDao;
@Override
public ResultBody listSecondDistrict() {
List<DistrictDO> list = webDeviceDao.listSecondDistrict();
List<DistrictInfoDTO> dtoList =
list.stream()
.map(
d -> {
return d.builderDistrictInfoDTO();
})
.collect(Collectors.toList());
return ResultBody.success(dtoList);
}
@Override
public ResultBody category() {
List<DeviceCategory> category = webDeviceDao.category();
List<DeviceCategoryDTO> collect =
category.stream()
.map(
t -> {
return t.deviceCategory();
})
.collect(Collectors.toList());
return ResultBody.success(collect);
}
@Override
public ResultBody brand() {
List<Brand> brand = webDeviceDao.brand();
List<BrandDTO> collect =
brand.stream()
.map(
t -> {
return t.brandDTO();
})
.collect(Collectors.toList());
return ResultBody.success(collect);
}
@Override
public ResultBody model() {
List<Model> model = webDeviceDao.model();
List<ModelDTO> collect =
model.stream()
.map(
t -> {
return t.modelDTO();
})
.collect(Collectors.toList());
return ResultBody.success(collect);
}
@Override
public ResultBody deviceList(
Integer districtId, Integer categoryId, Integer brandId, Integer modelId) {
List<DeviceListDO> deviceList =
webDeviceDao.deviceList(districtId, categoryId, brandId, modelId);
List<DeviceListDTO> collect =
deviceList.stream()
.map(
t -> {
return t.deviceListDTO();
})
.collect(Collectors.toList());
return ResultBody.success(collect);
}
@Override
public ResultBody update(LeaseVo param) {
InventoryDO inventory = webDeviceDao.findInventory(param.getInventoryId());
Integer residueCount = inventory.getResidueCount();
Integer count = residueCount - param.getInventoryUsage();
param.setInventoryUsage(count);
int update = webDeviceDao.update(param);
return ResultBody.success(update);
}
}
package com.mmc.pms.service;
import com.mmc.pms.common.ResultBody;
import com.mmc.pms.model.vo.LeaseVo;
/**
* @Author small @Date 2023/5/15 14:28 @Version 1.0
*/
public interface WebDeviceService {
ResultBody listSecondDistrict();
ResultBody category();
ResultBody brand();
ResultBody model();
ResultBody deviceList(Integer districtId, Integer categoryId, Integer brandId, Integer modelId);
ResultBody update(LeaseVo param);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.pms.dao.WebDeviceDao">
<resultMap id="secondDistrict"
type="com.mmc.pms.entity.DistrictDO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="level" column="level"/>
<result property="pid" column="pid"/>
<collection property="childInfo" javaType="java.util.List"
ofType="com.mmc.pms.entity.DistrictDO">
<id property="id" column="childId"/>
<result property="name" column="childName"/>
<result property="level" column="childLevel"/>
<result property="pid" column="childPid"/>
</collection>
</resultMap>
<select id="listSecondDistrict" resultMap="secondDistrict">
select p1.id,
p1.`name`,
p1.`level`,
p1.pid,
p2.id as childId,
p2.`name` as
childName,
p2.`level` as childLevel,
p2.pid as childPid
from sys_district p1,
sys_district p2
where p2.level!=3 and p1.id=p2.pid
</select>
<select id="category" resultType="com.mmc.pms.entity.DeviceCategory">
select id, `name`
from device_category;
</select>
<select id="brand" resultType="com.mmc.pms.entity.Brand">
select id, `name`
from brand;
</select>
<select id="model" resultType="com.mmc.pms.entity.Model">
select id, `name`
from model;
</select>
<select id="deviceList" resultType="com.mmc.pms.entity.DeviceListDO">
SELECT d.id,
d.`name` AS deviceName,
d.image_url AS imageUrl,
d.price,
b.`name` AS brandName,
sd.`name` AS sysDistrictName,
m.`name` AS modelName,
dc.`name` AS deviceCategoryName,
i.residue_count AS residueCount,
i.id as inventoryId
FROM device d
LEFT JOIN brand b ON d.brand_id = b.id
LEFT JOIN sys_district sd ON d.sys_district_id = sd.id
LEFT JOIN model m ON m.id = d.model_id
LEFT JOIN device_category dc ON dc.id = d.device_category_id
LEFT JOIN inventory i ON i.id = d.inventory_id
WHERE 1=1
<if test='districtId!=null and districtId!=" " '>
and sd.id = #{districtId}
</if>
<if test='brandId!=null and brandId!=" " '>
and b.id = #{brandId}
</if>
<if test='modelId!=null and modelId!=" " '>
and m.id = #{modelId}
</if>
<if test='categoryId!=null and categoryId!=" " '>
and dc.id = #{categoryId}
</if>
</select>
<update id="update">
update inventory
set residue_count=#{inventoryUsage}
where id = #{inventoryId}
</update>
<select id="findInventory" resultType="com.mmc.pms.entity.InventoryDO">
select id, all_count AS allCount, residue_count AS residueCount
from inventory
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论