applet/src/main/java/com/jilongda/applet/controller/TOrderController.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.jilongda.applet.model.TOptometryDetail; import com.jilongda.applet.model.TOrder; import com.jilongda.applet.model.TOrderGoods; import com.jilongda.applet.model.TStore; import com.jilongda.applet.query.TOrderQuery; import com.jilongda.applet.service.*; @@ -50,6 +51,8 @@ return ApiResult.success(pageInfo); } @Autowired private TOrderGoodsService tOrderGoodsService; @ApiOperation(value = "查询订单详情") @GetMapping(value = "/getDetailById") public ApiResult getDetailById(@RequestParam Integer id) { @@ -61,6 +64,9 @@ if(Objects.nonNull(store)){ tOrderVO.setStoreName(store.getName()); } // 查询商品详情 List<TOrderGoods> list1 = tOrderGoodsService.lambdaQuery().eq(TOrderGoods::getOrderId, id).list(); tOrderVO.setGoodsList(list1); // 查询配镜处方 List<TOptometryDetail> list = optometryDetailService.list(Wrappers.lambdaQuery(TOptometryDetail.class) .eq(TOptometryDetail::getOptometryId, order.getOptometryId())); applet/src/main/java/com/jilongda/applet/mapper/TFrameGoodsMapper.java
New file @@ -0,0 +1,20 @@ package com.jilongda.applet.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jilongda.applet.model.TFrameGoods; import com.jilongda.common.basic.PageInfo; import java.util.List; /** * <p> * 用户表 Mapper 接口 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TFrameGoodsMapper extends BaseMapper<TFrameGoods> { } applet/src/main/java/com/jilongda/applet/mapper/TLensGoodsMapper.java
New file @@ -0,0 +1,22 @@ package com.jilongda.applet.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jilongda.applet.model.TLensGoods; import com.jilongda.common.basic.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 用户表 Mapper 接口 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TLensGoodsMapper extends BaseMapper<TLensGoods> { } applet/src/main/java/com/jilongda/applet/mapper/TOrderGoodsMapper.java
New file @@ -0,0 +1,19 @@ package com.jilongda.applet.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jilongda.applet.model.TLensGoods; import com.jilongda.applet.model.TOrderGoods; /** * <p> * 用户表 Mapper 接口 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TOrderGoodsMapper extends BaseMapper<TOrderGoods> { } applet/src/main/java/com/jilongda/applet/model/TFrameGoods.java
New file @@ -0,0 +1,45 @@ package com.jilongda.applet.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; @ApiModelProperty(value = "1启用2禁用") @TableField("status") private Integer status; } applet/src/main/java/com/jilongda/applet/model/TLensGoods.java
New file @@ -0,0 +1,55 @@ package com.jilongda.applet.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_lens_goods") @ApiModel(value="TLensGoods对象", description="用户表") public class TLensGoods extends BaseModel { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键id") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "系列id") @TableField("seriesId") private Integer seriesId; @ApiModelProperty(value = "球镜") @TableField("ballMirror") private String ballMirror; @ApiModelProperty(value = "柱镜") @TableField("columnMirror") private String columnMirror; @ApiModelProperty(value = "折射率") @TableField("refractiveIndex") private String refractiveIndex; @ApiModelProperty(value = "库存") @TableField("total") private Integer total; @ApiModelProperty(value = "门店id") @TableField("storeId") private Integer storeId; @ApiModelProperty(value = "1启用2禁用") @TableField("status") private Integer status; @ApiModelProperty(value = "1球2非球3双非") @TableField("lensType") private Integer lensType; } applet/src/main/java/com/jilongda/applet/model/TOrderGoods.java
New file @@ -0,0 +1,93 @@ package com.jilongda.applet.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 io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.math.BigDecimal; /** * <p> * 销售订单表 * </p> * * @author 无关风月 * @since 2024-12-09 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_order_goods") @ApiModel(value="TOrderGoods对象", description="销售订单商品详情表") public class TOrderGoods implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键id") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "订单id") @TableField("orderId") private Integer orderId; @ApiModelProperty(value = "色号") @TableField("color") private String color; @ApiModelProperty(value = "镜片右 球镜+柱镜 逗号拼接 字段为空 客户自带") @TableField("rLens") private String rLens; @ApiModelProperty(value = "镜片左 球镜+柱镜 逗号拼接 字段为空 客户自带") @TableField("lLens") private String lLens; @ApiModelProperty(value = "1球 2非球面 3双非") @TableField("type") private Integer type; @ApiModelProperty(value = "折射率") @TableField("refractiveIndex") private String refractiveIndex; @ApiModelProperty(value = "品牌名称") @TableField("brandName") private String brandName; @ApiModelProperty(value = "镜片-系列名称") @TableField("seriesName") private String seriesName; @ApiModelProperty(value = "镜架-型号名称") @TableField("modelName") private String modelName; @ApiModelProperty(value = "镜架型号id 前端忽略") @TableField("modelId") private Integer modelId; @ApiModelProperty(value = "类型 1镜架 2镜片") @TableField("status") private Integer status; @ApiModelProperty(value = "商品价格") @TableField("goodsMoney") private BigDecimal goodsMoney; @ApiModelProperty(value = "系统成本价") @TableField("cost") private BigDecimal cost; @ApiModelProperty(value = "核算成本价") @TableField("constConfirm") private BigDecimal constConfirm; @ApiModelProperty(value = "镜片右 球镜+柱镜") @TableField(exist = false) private String rightLens; @ApiModelProperty(value = "镜片左 球镜+柱镜") @TableField(exist = false) private String leftLens; } applet/src/main/java/com/jilongda/applet/service/TFrameGoodsService.java
New file @@ -0,0 +1,18 @@ package com.jilongda.applet.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jilongda.applet.model.TFrameGoods; import com.jilongda.common.basic.PageInfo; /** * <p> * 用户表 服务类 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TFrameGoodsService extends IService<TFrameGoods> { } applet/src/main/java/com/jilongda/applet/service/TLensGoodsService.java
New file @@ -0,0 +1,18 @@ package com.jilongda.applet.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jilongda.applet.model.TLensGoods; import com.jilongda.common.basic.PageInfo; /** * <p> * 用户表 服务类 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TLensGoodsService extends IService<TLensGoods> { } applet/src/main/java/com/jilongda/applet/service/TOrderGoodsService.java
New file @@ -0,0 +1,16 @@ package com.jilongda.applet.service; import com.baomidou.mybatisplus.extension.service.IService; import com.jilongda.applet.model.TOrderGoods; /** * <p> * 用户表 服务类 * </p> * * @author 无关风月 * @since 2024-12-09 */ public interface TOrderGoodsService extends IService<TOrderGoods> { } applet/src/main/java/com/jilongda/applet/service/impl/TFrameGoodsServiceImpl.java
New file @@ -0,0 +1,28 @@ package com.jilongda.applet.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jilongda.applet.mapper.SecSettingMapper; import com.jilongda.applet.mapper.TFrameGoodsMapper; import com.jilongda.applet.model.SecSetting; import com.jilongda.applet.model.TFrameGoods; import com.jilongda.applet.service.TFrameGoodsService; import com.jilongda.common.basic.PageInfo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * <p> * 用户表 服务实现类 * </p> * * @author 无关风月 * @since 2024-12-09 */ @Service public class TFrameGoodsServiceImpl extends ServiceImpl<TFrameGoodsMapper, TFrameGoods> implements TFrameGoodsService { } applet/src/main/java/com/jilongda/applet/service/impl/TLensGoodsServiceImpl.java
New file @@ -0,0 +1,29 @@ package com.jilongda.applet.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jilongda.applet.mapper.SecSettingMapper; import com.jilongda.applet.mapper.TLensGoodsMapper; import com.jilongda.applet.model.SecSetting; import com.jilongda.applet.model.TLensGoods; import com.jilongda.applet.service.TLensGoodsService; import com.jilongda.common.basic.PageInfo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * <p> * 用户表 服务实现类 * </p> * * @author 无关风月 * @since 2024-12-09 */ @Service public class TLensGoodsServiceImpl extends ServiceImpl<TLensGoodsMapper, TLensGoods> implements TLensGoodsService { } applet/src/main/java/com/jilongda/applet/service/impl/TOrderGoodsServiceImpl.java
New file @@ -0,0 +1,21 @@ package com.jilongda.applet.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jilongda.applet.mapper.TOrderGoodsMapper; import com.jilongda.applet.model.TOrderGoods; import com.jilongda.applet.service.TOrderGoodsService; import org.springframework.stereotype.Service; /** * <p> * 用户表 服务实现类 * </p> * * @author 无关风月 * @since 2024-12-09 */ @Service public class TOrderGoodsServiceImpl extends ServiceImpl<TOrderGoodsMapper, TOrderGoods> implements TOrderGoodsService { } applet/src/main/java/com/jilongda/applet/service/impl/TOrderServiceImpl.java
@@ -1,13 +1,18 @@ package com.jilongda.applet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jilongda.applet.mapper.TOrderGoodsMapper; import com.jilongda.applet.model.TOrder; import com.jilongda.applet.mapper.TOrderMapper; import com.jilongda.applet.model.TOrderGoods; import com.jilongda.applet.query.TOrderQuery; import com.jilongda.applet.service.TOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jilongda.applet.vo.TOrderVO; import com.jilongda.common.basic.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.List; @@ -22,10 +27,54 @@ @Service public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements TOrderService { @Autowired private TOrderGoodsMapper orderGoodsMapper; @Override public PageInfo<TOrderVO> pageList(TOrderQuery query) { PageInfo<TOrderVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TOrderVO> list = this.baseMapper.pageList(query,pageInfo); for (TOrderVO tOrderVO : list) { List<TOrderGoods> orderGoods = orderGoodsMapper.selectList(new LambdaQueryWrapper<TOrderGoods>().eq(TOrderGoods::getOrderId, tOrderVO.getId())); for (TOrderGoods orderGood : orderGoods) { if (StringUtils.hasLength(orderGood.getModelName())){ // 镜架 tOrderVO.setFrame(orderGood.getBrandName()+orderGood.getModelName()+" "+orderGood.getColor()); continue; } if (StringUtils.hasLength(orderGood.getLLens())){ String temp = null; switch (orderGood.getType()){ case 1: temp = "球面"; break; case 2: temp = "非球面"; break; case 3: temp = "双非"; break; } tOrderVO.setLensL(orderGood.getBrandName() + orderGood.getSeriesName() + temp + orderGood.getRefractiveIndex()); continue; } if (StringUtils.hasLength(orderGood.getRLens())){ String temp = null; switch (orderGood.getType()){ case 1: temp = "球面"; break; case 2: temp = "非球面"; break; case 3: temp = "双非"; break; } tOrderVO.setLensR(orderGood.getBrandName() + orderGood.getSeriesName() + temp + orderGood.getRefractiveIndex()); } } } pageInfo.setRecords(list); return pageInfo; } applet/src/main/java/com/jilongda/applet/vo/TOrderVO.java
@@ -2,6 +2,7 @@ import com.jilongda.applet.model.TOptometryDetail; import com.jilongda.applet.model.TOrder; import com.jilongda.applet.model.TOrderGoods; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +17,14 @@ private String modelName; @ApiModelProperty(value = "门店名称") private String storeName; @ApiModelProperty(value = "镜片R") private String lensR; @ApiModelProperty(value = "镜片L") private String lensL; @ApiModelProperty(value = "镜架") private String frame; @ApiModelProperty(value = "处方详情") private List<TOptometryDetail> optometryDetails; @ApiModelProperty(value = "商品列表信息") private List<TOrderGoods> goodsList; } applet/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.applet.mapper.TFrameGoodsMapper"> </mapper> applet/src/main/resources/mapping/TLensGoods.xml
New file @@ -0,0 +1,5 @@ <?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.applet.mapper.TLensGoodsMapper"> </mapper> manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java
@@ -98,7 +98,7 @@ return ApiResult.success(tAppUserVO); } @ApiOperation(value = "用户详情-查看优惠券") @GetMapping(value = "/getCouponDetailById") @PostMapping(value = "/getCouponDetailById") public ApiResult<PageInfo<TAppUserCouponVO>> getCouponDetailById(@RequestBody TAppUserCouponQuery query) { PageInfo<TAppUserCouponVO> appUserVOPageInfo = couponReceiveService.pageList(query); return ApiResult.success(appUserVOPageInfo); manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
@@ -15,6 +15,7 @@ import com.jilongda.manage.service.TAppUserService; import com.jilongda.manage.service.TCouponReceiveService; import com.jilongda.manage.service.TCouponService; import com.jilongda.manage.utils.OssUploadUtil; import com.jilongda.manage.utils.QRCodeUtil; import com.jilongda.manage.vo.TAppUserVO; import com.jilongda.manage.vo.TCouponInfoVO; @@ -119,8 +120,9 @@ String code = "{\"id\": "+dto.getId()+ "}"; BufferedImage blueImage = QRCodeUtil.createImage(code); MultipartFile blueFile = convert(blueImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG"); // todo 没有云存储 // String s = OssUploadUtil.ossUpload("img/", blueFile); String s = OssUploadUtil.ossUpload("eyes/", blueFile); dto.setQrCode(s); couponService.updateById(dto); break; } return ApiResult.success(); manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java
@@ -75,6 +75,7 @@ res.setPhone(byId1.getPhone()); } } res.setPhone(byId.getPhone()); res.setAge(byId.getAge()); res.setRealName(byId.getRealName()); res.setGender(byId.getGender()); manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
@@ -13,6 +13,7 @@ import com.jilongda.manage.query.TOrderQuery; import com.jilongda.manage.service.*; import com.jilongda.manage.utils.LoginInfoUtil; import com.jilongda.manage.utils.OssUploadUtil; import com.jilongda.manage.vo.TModelVO; import com.jilongda.manage.vo.TOptometryVO; import com.jilongda.manage.vo.TOrderListVO; @@ -24,6 +25,7 @@ import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; import java.util.*; @@ -68,6 +70,21 @@ private TBrandService brandService; @Autowired private TOptometryService optometryService; @PostMapping("/obs-upload") @ApiOperation(value = "文件上传",tags = "管理后台-文件上传") public ApiResult<String> uploadOSS(@RequestPart("file") MultipartFile file) { try { // 上传并返回访问地址 String fileName = file.getOriginalFilename(); String prefix = fileName.substring(fileName.lastIndexOf(".")); long fileSize = file.getSize(); String url = OssUploadUtil.ossUpload("eyes/",file); return ApiResult.success(url); } catch (Exception e) { System.err.println("上传文件失败"+e); return ApiResult.failed(e.getMessage()); } } @ApiOperation(value = "销售订单分页列表") @PostMapping(value = "/pageList") public ApiResult<PageInfo<TOrderListVO>> pageList(@RequestBody TOrderQuery query) { manage/src/main/java/com/jilongda/manage/model/TCoupon.java
@@ -50,6 +50,9 @@ @ApiModelProperty(value = "门店id 空字符串表示不限门店") @TableField("storeId") private String storeId; @ApiModelProperty(value = "扫码发放的二维码地址") @TableField("qrCode") private String qrCode; @ApiModelProperty(value = " 有效期(天)最高365 0表示无期限") @TableField("time") manage/src/main/resources/mapping/TOrderAccountingMapper.xml
@@ -39,17 +39,17 @@ <if test="query.phone != null and query.phone != ''"> and t1.phone like concat('%',#{query.phone},'%') </if> <if test="req.startTime != null and req.startTime!=''"> and (t1.createTime between #{req.startTime} and #{req.endTime}) <if test="query.startTime != null and query.startTime!=''"> and (t1.createTime between #{query.startTime} and #{query.endTime}) </if> <if test="req.startMoney != null "> and (t1.payMoney between #{req.startMoney} and #{req.endMoney}) <if test="query.startMoney != null "> and (t1.payMoney between #{query.startMoney} and #{query.endMoney}) </if> <if test="req.isAccounting != null "> and t1.isAccounting = #{req.isAccounting} <if test="query.isAccounting != null "> and t1.isAccounting = #{query.isAccounting} </if> <if test="req.storeId != null "> and t1.storeId = #{req.storeId} <if test="query.storeId != null "> and t1.storeId = #{query.storeId} </if> order by t1.isAccounting desc </select> manage/src/main/resources/mapping/TOrderAftersalesMapper.xml
@@ -27,8 +27,8 @@ toa.createBy, toa.updateBy, toa.isDelete,tau.name, tau.phone, tau.realName, ts.name as storeName, o.orderMoney from t_order_aftersales toa left join t_app_user tau on toa.sysId = tau.id left join t_store ts on toa.storeId = ts.id left join t_order o on toa.orderId = o.id left join t_store ts on o.storeId = ts.id <where> <if test="query.name != null and query.name != ''"> and tau.name like concat('%',#{query.name},'%') @@ -37,7 +37,7 @@ and tau.phone like concat('%',#{query.phone},'%') </if> <if test="query.storeId != null"> and toa.storeId = #{query.phone} and o.storeId = #{query.phone} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> and toa.createTime between #{query.startTime} and #{query.endTime}