applet/src/main/java/com/jilongda/applet/model/TAppUser.java
@@ -57,9 +57,7 @@ @TableField("gender") private Integer gender; @ApiModelProperty(value = "注册时间") @TableField("registerTime") private LocalDateTime registerTime; @ApiModelProperty(value = "状态 1=启用 0=禁用") @TableField("status") manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java
@@ -1,9 +1,27 @@ package com.jilongda.manage.controller; import org.springframework.web.bind.annotation.RequestMapping; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jilongda.common.basic.ApiResult; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.model.TAppUser; import com.jilongda.manage.model.TOptometry; import com.jilongda.manage.model.TOrder; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.query.TOptometristQuery; import com.jilongda.manage.service.TAppUserService; import com.jilongda.manage.service.TOptometryService; import com.jilongda.manage.service.TOrderService; import com.jilongda.manage.vo.TAppUserVO; import com.jilongda.manage.vo.TOptometristVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; /** * <p> @@ -14,8 +32,64 @@ * @since 2024-12-09 */ @RestController @Api(tags = "用户管理") @RequestMapping("/t-app-user") public class TAppUserController { @Resource private TAppUserService appUserService; @Resource private TOrderService orderService; @Resource private TOptometryService tOptometryService; @ApiOperation(value = "用户列表") @PostMapping(value = "/pageList") public ApiResult<PageInfo<TAppUserVO>> pageList(@RequestBody TAppUserQuery query) { if (StringUtils.hasLength(query.getStartTime())){ query.setStartTime(query.getStartTime()+" 00:00:00"); query.setEndTime(query.getEndTime()+" 23:59:59"); } PageInfo<TAppUserVO> appUserVOPageInfo = appUserService.pageList(query); return ApiResult.success(appUserVOPageInfo); } @ApiOperation(value = "启用/禁用") @GetMapping(value = "/updateState") public ApiResult updateState(Integer id) { TAppUser byId = appUserService.getById(id); if (byId.getStatus()==1){ byId.setStatus(2); }else{ byId.setStatus(1); } appUserService.updateById(byId); return ApiResult.success(); } @ApiOperation(value = "用户详情") @GetMapping(value = "/getDetailById") public ApiResult<TAppUserVO> getDetailById(Integer id) { TAppUser byId = appUserService.getById(id); TAppUserVO tAppUserVO = new TAppUserVO(); BeanUtils.copyProperties(byId, tAppUserVO); // 查询消费次数 long l = orderService.count(new LambdaQueryWrapper<TOrder>() .eq(TOrder::getUserId, tAppUserVO.getId())); tAppUserVO.setSalesCount((int) l); // 查询验光次数 int size = tOptometryService.lambdaQuery().eq(TOptometry::getUserId, tAppUserVO.getId()) .eq(TOptometry::getStatus, 3).list().size(); tAppUserVO.setOptometryCount(size); // 查询最后消费时间 tAppUserVO.setSalesTime(orderService.lambdaQuery().eq(TOrder::getUserId, tAppUserVO.getId()) .orderByDesc(TOrder::getCreateTime).last("limit 1").one().getCreateTime()); // 查询最后验光时间 tAppUserVO.setOptometryTime(tOptometryService.lambdaQuery().eq(TOptometry::getUserId, tAppUserVO.getId()) .eq(TOptometry::getStatus, 3).orderByDesc(TOptometry::getCreateTime).last("limit 1").one().getCreateTime()); // 查询订单总额 BigDecimal reduce = orderService.lambdaQuery().eq(TOrder::getUserId, byId.getId()).list().stream().map(TOrder::getPayMoney) .reduce(BigDecimal.ZERO, BigDecimal::add); tAppUserVO.setSalesAmount(reduce); return ApiResult.success(tAppUserVO); } } manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java
@@ -10,11 +10,13 @@ import com.jilongda.common.utils.CodeGenerateUtils; import com.jilongda.manage.dto.TWarehousingDTO; import com.jilongda.manage.dto.TWarehousingLensDTO; import com.jilongda.manage.model.TFrameGoods; import com.jilongda.manage.model.TFrameWarehousingDetail; import com.jilongda.manage.model.TLensWarehousingDetail; import com.jilongda.manage.model.TWarehousing; import com.jilongda.manage.query.TWarehousingDetailLensQuery; import com.jilongda.manage.query.TWarehousingDetailQuery; import com.jilongda.manage.service.TFrameGoodsService; import com.jilongda.manage.service.TFrameWarehousingDetailService; import com.jilongda.manage.service.TLensWarehousingDetailService; import com.jilongda.manage.service.TWarehousingService; @@ -30,6 +32,7 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** @@ -51,6 +54,8 @@ private TFrameWarehousingDetailService frameWarehousingDetailService; @Autowired private TLensWarehousingDetailService lensWarehousingDetailService; @Autowired private TFrameGoodsService frameGoodsService; /** * 出入库单列表 @@ -105,6 +110,43 @@ detail.setCode(WarehousingConstant.OUT_BOUND+CodeGenerateUtils.generateVolumeSn()); }); frameWarehousingDetailService.saveBatch(frameWarehousingDetails); if (dto.getStatus()==1||dto.getStatus()==3){ List<TFrameGoods> list1 = new ArrayList<>(); for (TFrameWarehousingDetail frameWarehousingDetail : frameWarehousingDetails) { TFrameGoods one = frameGoodsService.lambdaQuery().eq(TFrameGoods::getModelId, frameWarehousingDetail.getModelId()) .eq(TFrameGoods::getColor, frameWarehousingDetail.getColor()).one(); if (one!=null){ // 增加对应库存 one.setTotal(one.getTotal()-frameWarehousingDetail.getTotal()); list1.add(one); } } if (!list1.isEmpty())frameGoodsService.updateBatchById(list1); } if (dto.getStatus()==2 || dto.getStatus()==4){ List<TFrameGoods> list1 = new ArrayList<>(); List<TFrameGoods> list2 = new ArrayList<>(); for (TFrameWarehousingDetail frameWarehousingDetail : frameWarehousingDetails) { TFrameGoods one = frameGoodsService.lambdaQuery().eq(TFrameGoods::getModelId, frameWarehousingDetail.getModelId()) .eq(TFrameGoods::getColor, frameWarehousingDetail.getColor()).one(); if (one!=null){ // 增加对应库存 one.setTotal(one.getTotal()+frameWarehousingDetail.getTotal()); list1.add(one); }else { // 新增 TFrameGoods tFrameGoods = new TFrameGoods(); tFrameGoods.setColor(frameWarehousingDetail.getColor()); tFrameGoods.setTotal(frameWarehousingDetail.getTotal()); tFrameGoods.setModelId(frameWarehousingDetail.getModelId()); tFrameGoods.setStoreId(dto.getStoreId()); list2.add(tFrameGoods); } } if (!list1.isEmpty())frameGoodsService.updateBatchById(list1); if (!list2.isEmpty())frameGoodsService.saveBatch(list2); } return ApiResult.success(dto.getId()); } /** manage/src/main/java/com/jilongda/manage/mapper/TAppUserMapper.java
@@ -1,7 +1,13 @@ package com.jilongda.manage.mapper; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.model.TAppUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.vo.TAppUserVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -13,4 +19,6 @@ */ public interface TAppUserMapper extends BaseMapper<TAppUser> { List<TAppUserVO> pageList(@Param("query")TAppUserQuery query, @Param("pageInfo")PageInfo<TAppUserVO> pageInfo); } manage/src/main/java/com/jilongda/manage/mapper/TFrameGoodsMapper.java
New file @@ -0,0 +1,24 @@ package com.jilongda.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.model.TAppUser; import com.jilongda.manage.model.TFrameGoods; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.vo.TAppUserVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 用户表 Mapper 接口 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TFrameGoodsMapper extends BaseMapper<TFrameGoods> { } manage/src/main/java/com/jilongda/manage/model/TAppUser.java
@@ -55,10 +55,14 @@ @ApiModelProperty(value = "性别1男2女3保密") @TableField("gender") private Integer gender; @ApiModelProperty(value = "状态 1=启用 0=禁用") @TableField("status") private Integer status; @ApiModelProperty(value = "头像") @TableField("avatar") private String avatar; @ApiModelProperty(value = "注册时间") @TableField("registerTime") private LocalDateTime registerTime; } manage/src/main/java/com/jilongda/manage/model/TFrameGoods.java
New file @@ -0,0 +1,43 @@ package com.jilongda.manage.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.jilongda.common.pojo.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * 用户表 * </p> * * @author 无关风月 * @since 2024-12-09 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_frame_goods") @ApiModel(value="TFrameGoods对象", description="用户表") public class TFrameGoods extends BaseModel { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键id") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "色号") @TableField("color") private String color; @ApiModelProperty(value = "库存") @TableField("total") private Integer total; @ApiModelProperty(value = "型号id") @TableField("modelId") private Integer modelId; @ApiModelProperty(value = "门店id") @TableField("storeId") private Integer storeId; } manage/src/main/java/com/jilongda/manage/query/TAppUserQuery.java
New file @@ -0,0 +1,27 @@ package com.jilongda.manage.query; import com.jilongda.common.pojo.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "验光师查询条件") public class TAppUserQuery extends BasePage { @ApiModelProperty(value = "微信昵称") private String name; @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "姓名") private String realName; @ApiModelProperty(value = "注册起始时间 例:2022-11-11") private String startTime; @ApiModelProperty(value = "注册结束时间 例:2022-11-11") private String endTime; } manage/src/main/java/com/jilongda/manage/query/TOptometryQuery.java
@@ -21,6 +21,8 @@ private Integer storeId; @ApiModelProperty(value = "验光师id") private Integer optometristId; @ApiModelProperty(value = "用户id") private Integer userId; @ApiModelProperty(value = "开始时间 前端忽略") private String startTime; @ApiModelProperty(value = "结束时间 前端忽略") manage/src/main/java/com/jilongda/manage/service/TAppUserService.java
@@ -1,7 +1,10 @@ package com.jilongda.manage.service; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.model.TAppUser; import com.baomidou.mybatisplus.extension.service.IService; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.vo.TAppUserVO; /** * <p> @@ -13,4 +16,5 @@ */ public interface TAppUserService extends IService<TAppUser> { PageInfo<TAppUserVO> pageList(TAppUserQuery query); } manage/src/main/java/com/jilongda/manage/service/TFrameGoodsService.java
New file @@ -0,0 +1,20 @@ package com.jilongda.manage.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.model.TAppUser; import com.jilongda.manage.model.TFrameGoods; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.vo.TAppUserVO; /** * <p> * 用户表 服务类 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TFrameGoodsService extends IService<TFrameGoods> { } manage/src/main/java/com/jilongda/manage/service/impl/TAppUserServiceImpl.java
@@ -1,10 +1,20 @@ package com.jilongda.manage.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.mapper.TOrderMapper; import com.jilongda.manage.model.TAppUser; import com.jilongda.manage.mapper.TAppUserMapper; import com.jilongda.manage.model.TOrder; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.service.TAppUserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jilongda.manage.vo.TAppUserVO; import com.jilongda.manage.vo.TOptometryVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * <p> @@ -17,4 +27,18 @@ @Service public class TAppUserServiceImpl extends ServiceImpl<TAppUserMapper, TAppUser> implements TAppUserService { @Autowired private TOrderMapper orderMapper; @Override public PageInfo<TAppUserVO> pageList(TAppUserQuery query) { PageInfo<TAppUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TAppUserVO> list = this.baseMapper.pageList(query,pageInfo); for (TAppUserVO tAppUserVO : list) { Long l = orderMapper.selectCount(new LambdaQueryWrapper<TOrder>() .eq(TOrder::getUserId, tAppUserVO.getId())); tAppUserVO.setSalesCount(l.intValue()); } pageInfo.setRecords(list); return pageInfo; } } manage/src/main/java/com/jilongda/manage/service/impl/TFrameGoodsServiceImpl.java
New file @@ -0,0 +1,33 @@ package com.jilongda.manage.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.mapper.TAppUserMapper; import com.jilongda.manage.mapper.TFrameGoodsMapper; import com.jilongda.manage.mapper.TOrderMapper; import com.jilongda.manage.model.TAppUser; import com.jilongda.manage.model.TFrameGoods; import com.jilongda.manage.model.TOrder; import com.jilongda.manage.query.TAppUserQuery; import com.jilongda.manage.service.TAppUserService; import com.jilongda.manage.service.TFrameGoodsService; import com.jilongda.manage.vo.TAppUserVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * 用户表 服务实现类 * </p> * * @author 无关风月 * @since 2024-12-09 */ @Service public class TFrameGoodsServiceImpl extends ServiceImpl<TFrameGoodsMapper, TFrameGoods> implements TFrameGoodsService { } manage/src/main/java/com/jilongda/manage/vo/TAppUserVO.java
New file @@ -0,0 +1,28 @@ package com.jilongda.manage.vo; import com.jilongda.manage.model.TAppUser; import com.jilongda.manage.model.TOptometrist; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @ApiModel(value = "用户VO") public class TAppUserVO extends TAppUser { @ApiModelProperty(value = "消费次数") private Integer salesCount; @ApiModelProperty(value = "验光次数") private Integer optometryCount; @ApiModelProperty(value = "最后消费时间") private LocalDateTime salesTime; @ApiModelProperty(value = "最后验光时间") private LocalDateTime optometryTime; @ApiModelProperty(value = "消费总金额") private BigDecimal salesAmount; } manage/src/main/resources/mapping/TAppUserMapper.xml
@@ -22,5 +22,23 @@ <sql id="Base_Column_List"> id, name, phone, realName, age, gender, registerTime, createTime, updateTime, createBy, updateBy, isDelete </sql> <select id="pageList" resultType="com.jilongda.manage.vo.TAppUserVO"> select * from t_app_user where 1=1 <if test="query.name != null and query.name != ''"> and name like concat('%',#{query.name},'%') </if> <if test="query.phone != null and query.phone != ''"> and phone like concat('%',#{query.phone},'%') </if> <if test="query.realName != null and query.realName != ''"> and realName like concat('%',#{query.realName},'%') </if> <if test="query.startTime != null and query.startTime != ''"> and (createTime between #{query.startTime} and #{query.endTime}) </if> </select> </mapper> manage/src/main/resources/mapping/TFrameGoods.xml
New file @@ -0,0 +1,6 @@ <?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.jilongda.manage.mapper.TFrameGoodsMapper"> </mapper> manage/src/main/resources/mapping/TOptometristMapper.xml
@@ -37,6 +37,9 @@ <if test="query.name != null and query.name != ''"> and t2.`name` like concat('%',#{query.name},'%') </if> <if test="query.userId != null and query.userId != ''"> and t2.id like concat('%',#{query.userId},'%') </if> <if test="query.realName != null and query.realName != ''"> and t1.`name` like concat('%',#{query.realName},'%') </if> optometry/src/main/java/com/jilongda/optometry/model/TAppUser.java
@@ -53,9 +53,6 @@ @TableField("gender") private Integer gender; @ApiModelProperty(value = "注册时间") @TableField("registerTime") private LocalDateTime registerTime; @ApiModelProperty(value = "创建时间") @TableField("createTime")