From 4c51e1be0811ee579d87c61fdc2998be46c677a7 Mon Sep 17 00:00:00 2001 From: longbinbin <2284496322@qq.com> Date: Tue, 10 Dec 2024 14:17:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=B1=BB=E5=9E=8B=E7=94=B1?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=98=8E=E7=BB=86=E7=A7=BB=E5=8A=A8=E8=87=B3?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9C=AC=E4=BD=93=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/mobile/AppFaceController.java | 21 +++-- .../controller/mobile/AppOrderController.java | 2 - .../com/ycwl/basic/mapper/pc/FaceMapper.java | 2 + .../model/mobile/order/OrderAppPageReq.java | 87 +++++++++++++++++++ .../pc/order/req/OrderAddOrUpdateReq.java | 4 + .../model/pc/order/req/OrderReqQuery.java | 2 +- .../model/pc/order/resp/OrderAppRespVO.java | 5 ++ .../model/pc/order/resp/OrderItemVO.java | 5 -- .../model/pc/order/resp/OrderRespVO.java | 2 + .../impl/mobile/AppMemberServiceImpl.java | 2 +- .../service/impl/pc/FaceServiceImpl.java | 48 +++++++--- .../service/impl/pc/OrderServiceImpl.java | 4 +- .../ycwl/basic/service/pc/FaceService.java | 2 +- .../com/ycwl/basic/utils/JwtTokenUtil.java | 11 +-- src/main/resources/mapper/pc/FaceMapper.xml | 5 ++ src/main/resources/mapper/pc/OrderMapper.xml | 75 ++++++++-------- 16 files changed, 206 insertions(+), 71 deletions(-) create mode 100644 src/main/java/com/ycwl/basic/model/mobile/order/OrderAppPageReq.java diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java index 74e0339..b161bbd 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -23,14 +24,22 @@ AppFaceController { @Autowired private FaceService faceService; + /** + * 1、上传人脸照片 + * 2、人脸照片有效性校验 + * 3、校验失败,删除,提示重新上传 + * 4、校验成功,保存用户人脸信息,将访问人脸照片访问地址响应给前端 + * @param file + * @param scenicId + * @return + */ @ApiOperation("人脸照片上传") @PostMapping("/faceUPload") - public ApiResponse faceUPload(MultipartFile file) { - //1、上传人脸照片 - //2、人脸照片有效性校验 - //3、校验失败,删除,提示重新上传 - //4、校验成功,保存用户人脸信息,将访问人脸照片访问地址响应给前端 + public ApiResponse faceUPload(@RequestParam("file")MultipartFile file, @RequestParam("scenicId") Long scenicId) { - return faceService.faceUPload(file); + return faceService.faceUPload(file,scenicId); } + + + } diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java index 1051e5e..72a977a 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java @@ -29,7 +29,6 @@ public class AppOrderController { @ApiOperation("用户端订单列表查询") @PostMapping("/page") - @IgnoreToken public ApiResponse> pageQuery(@RequestBody OrderReqQuery orderReqQuery) { String userId = BaseContextHandler.getUserId(); orderReqQuery.setMemberId(Long.valueOf(userId)); @@ -38,7 +37,6 @@ public class AppOrderController { @ApiOperation("用户端订单详情查询") @GetMapping("getOrderDetails/{id}") - @IgnoreToken public ApiResponse getOrderDetails(@PathVariable("id") Long id) { return orderService.appDetail(id); } diff --git a/src/main/java/com/ycwl/basic/mapper/pc/FaceMapper.java b/src/main/java/com/ycwl/basic/mapper/pc/FaceMapper.java index 8ea2a79..b326b7c 100644 --- a/src/main/java/com/ycwl/basic/mapper/pc/FaceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/pc/FaceMapper.java @@ -21,4 +21,6 @@ public interface FaceMapper { int deleteById(Long id); int deleteByIds(@Param("list") List ids); int update(FaceEntity face); + + FaceRespVO getByMemberId(String userId); } diff --git a/src/main/java/com/ycwl/basic/model/mobile/order/OrderAppPageReq.java b/src/main/java/com/ycwl/basic/model/mobile/order/OrderAppPageReq.java new file mode 100644 index 0000000..1a8ad88 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/mobile/order/OrderAppPageReq.java @@ -0,0 +1,87 @@ +package com.ycwl.basic.model.mobile.order; + +import com.ycwl.basic.model.common.BaseQueryParameterReq; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/11/29 16:33 + */ +@Data +@ApiModel(value = "移动端订单查询对象") +public class OrderAppPageReq extends BaseQueryParameterReq { + @ApiModelProperty(value = "用户id",hidden = true) + private Long memberId; +// /** +// * 微信openId +// */ +// @ApiModelProperty("微信openId") +// private Long openId; +// /** +// * 价格 +// */ +// @ApiModelProperty("价格") +// private BigDecimal price; +// /** +// * 实际支付价格 +// */ +// @ApiModelProperty("实际支付价格") +// private BigDecimal payPrice; +// /** +// * 推客id +// */ +// @ApiModelProperty("推客id") +// private Long brokerId; +// /** +// * 推客优惠码 +// */ +// @ApiModelProperty("推客优惠码") +// private String promoCode; +// /** +// * 退款原因 +// */ +// @ApiModelProperty("退款原因") +// private String refundReason; +// /** +// * 退款状态,0未提出,1已通过,2待审核 +// */ +// @ApiModelProperty("退款状态,0未提出,1已通过,2待审核") +// private Integer refundStatus; +// /** +// * 状态,0未支付,1已支付,2已退款,9已取消 +// */ +// @ApiModelProperty("状态,0未支付,1已支付,2已退款,9已取消") +// private Integer status; +// /** +// * 订单创建时间 +// */ +// @ApiModelProperty("订单创建时间") +// private Date startCreateTime; +// private Date endCreateTime; +// /** +// * 订单支付时间 +// */ +// @ApiModelProperty("订单支付时间") +// private Date startPayTime; +// private Date endPayTime; +// /** +// * 订单取消时间 +// */ +// @ApiModelProperty("订单取消时间") +// private Date startCancelTime; +// private Date endCancelTime; +// /** +// * 订单退款时间 +// */ +// @ApiModelProperty("订单退款时间") +// private Date startRefundTime; +// private Date endRefundTime; + + @ApiModelProperty("订单类型 0成片(vlog) 1原片 2照片") + private Integer type; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddOrUpdateReq.java b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddOrUpdateReq.java index 02f5120..f084cab 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddOrUpdateReq.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddOrUpdateReq.java @@ -27,6 +27,8 @@ public class OrderAddOrUpdateReq { */ @ApiModelProperty("微信openId") private Long openId; + @ApiModelProperty("景区id") + private Long scenicId; /** * 价格 */ @@ -52,6 +54,8 @@ public class OrderAddOrUpdateReq { */ @ApiModelProperty("推客优惠码") private String promoCode; + @ApiModelProperty("订单商品类型 1成片,2源素材") + private Integer goodsType; /** * 退款原因 */ diff --git a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java index 55940f4..78568ed 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java @@ -17,7 +17,7 @@ import java.util.Date; @Data @ApiModel(value = "订单查询对象") public class OrderReqQuery extends BaseQueryParameterReq { - private Long id; +// private Long id; private Long memberId; @ApiModelProperty("用户昵称") private String memberNickname; diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java index 704d5bc..f1ad828 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java @@ -83,6 +83,11 @@ public class OrderAppRespVO { private String goodsName; @ApiModelProperty("拍摄时间") private Date shootingTime; + /** + * 商品类型,0其他,1成片,2原片,3模板成片 + */ + @ApiModelProperty("商品类型,1成片,2源素材") + private Integer goodsType; @ApiModelProperty("订单明细") private List orderItemList; } diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java index d76f6cf..57a9df8 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java @@ -19,11 +19,6 @@ public class OrderItemVO { */ @ApiModelProperty("订单id") private Long orderId; - /** - * 商品类型,0其他,1成片,2原片,3模板成片 - */ - @ApiModelProperty("商品类型,0其他,1成片,2源素材") - private Integer goodsType; /** * 商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id */ diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java index 5d1a15b..b61d74d 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java @@ -53,6 +53,8 @@ public class OrderRespVO { */ @ApiModelProperty("推客优惠码") private String promoCode; + @ApiModelProperty("订单商品类型 1成片,2源素材") + private Integer goodsType; /** * 退款原因 */ diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/AppMemberServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/AppMemberServiceImpl.java index 907f3e3..2699cc7 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/AppMemberServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/AppMemberServiceImpl.java @@ -98,9 +98,9 @@ public class AppMemberServiceImpl implements AppMemberService { List list = memberMapper.list(memberReqQuery); if (list.isEmpty()) { MemberEntity memberEntity = new MemberEntity(); + BeanCopierUtils.copyProperties(userInfoDTO, memberEntity); memberEntity.setId(SnowFlakeUtil.getLongId()); memberEntity.setOpenId(openId.toString()); - BeanCopierUtils.copyProperties(userInfoDTO, memberEntity); memberMapper.add(memberEntity); BeanCopierUtils.copyProperties(memberEntity, memberRespVO); } else { diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java index c3bfcf9..2651f6c 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java @@ -1,5 +1,6 @@ package com.ycwl.basic.service.impl.pc; +import cn.hutool.core.bean.BeanUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ycwl.basic.constant.BaseContextHandler; @@ -9,11 +10,16 @@ import com.ycwl.basic.model.jwt.JwtInfo; import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.face.req.FaceReqQuery; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; +import com.ycwl.basic.model.task.resp.SearchFaceRespVo; +import com.ycwl.basic.service.impl.task.TaskFaceServiceImpl; import com.ycwl.basic.service.pc.FaceService; +import com.ycwl.basic.service.task.TaskFaceService; import com.ycwl.basic.utils.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @@ -32,6 +38,11 @@ public class FaceServiceImpl implements FaceService { private FaceMapper faceMapper; @Autowired private OssUtil ossUtil; + @Autowired + private TaskFaceService faceService; + + @Value("${face.score}") + private float faceScore; @Override public ApiResponse> pageQuery(FaceReqQuery faceReqQuery) { @@ -89,20 +100,21 @@ public class FaceServiceImpl implements FaceService { } @Override - public ApiResponse faceUPload(MultipartFile file) { - //TODO 获取用户信息 +// @Transactional(rollbackFor = Exception.class) + public ApiResponse faceUPload(MultipartFile file,Long scenicId) { + //获取用户id String userId = BaseContextHandler.getUserId(); + JwtInfo worker = JwtTokenUtil.getWorker(); + log.info("当前登录用户信息:{}",worker); + //1、上传人脸照片 String facaeUrl = uploadFileALiOss(file, userId); - //TODO 2、人脸照片有效性校验 - Boolean isValid=true; + // 2、查看人脸是否已上传 + FaceRespVO faceRespVO=faceMapper.getByMemberId(userId); - - - if(isValid){ - //校验成功,保存用户人脸信息,将访问人脸照片访问地址响应给前端 - - FaceEntity faceEntity = new FaceEntity(); + FaceEntity faceEntity = new FaceEntity(); + if (faceRespVO==null) { + //新增人脸 faceEntity.setId(SnowFlakeUtil.getLongId()); faceEntity.setMemberId(Long.parseLong(userId)); faceEntity.setFaceUrl(facaeUrl); @@ -112,14 +124,26 @@ public class FaceServiceImpl implements FaceService { // faceEntity.setMatchResult(); //TODO 人脸数据存库 faceMapper.add(faceEntity); - - return ApiResponse.success(facaeUrl); }else { + //2、更新人脸 + faceRespVO.setFaceUrl(facaeUrl); + BeanUtil.copyProperties(faceRespVO,faceEntity); + faceMapper.update(faceEntity); + } + SearchFaceRespVo faceRespVo = faceService.searchFace(scenicId, faceRespVO.getId()); + float score = faceRespVo.getScore(); + if (score orderItemList = orderRespVO.getOrderItemList(); orderItemList.forEach(orderItemVO -> { - Integer goodsType = orderItemVO.getGoodsType(); Long goodsId = orderItemVO.getGoodsId(); if (Objects.equals(goodsType, GoodsTypeEnum.VIDEO.code)) { VideoEntity videoEntity = new VideoEntity(); @@ -225,9 +225,9 @@ public class OrderServiceImpl implements OrderService { }); } else if (state == OrderStateEnum.REFUNDED.getState()) {//订单退款成功就把商品状态更改成未购买 OrderRespVO orderRespVO = orderMapper.getById(orderSn); + Integer goodsType = orderRespVO.getGoodsType(); List orderItemList = orderRespVO.getOrderItemList(); orderItemList.forEach(orderItemVO -> { - Integer goodsType = orderItemVO.getGoodsType(); Long goodsId = orderItemVO.getGoodsId(); if (Objects.equals(goodsType, GoodsTypeEnum.VIDEO.code)) { VideoEntity videoEntity = new VideoEntity(); diff --git a/src/main/java/com/ycwl/basic/service/pc/FaceService.java b/src/main/java/com/ycwl/basic/service/pc/FaceService.java index b5aff94..957d77b 100644 --- a/src/main/java/com/ycwl/basic/service/pc/FaceService.java +++ b/src/main/java/com/ycwl/basic/service/pc/FaceService.java @@ -22,5 +22,5 @@ public interface FaceService { ApiResponse deleteByIds(List ids); ApiResponse update(FaceEntity face); - ApiResponse faceUPload(MultipartFile file); + ApiResponse faceUPload(MultipartFile file,Long scrnicId); } diff --git a/src/main/java/com/ycwl/basic/utils/JwtTokenUtil.java b/src/main/java/com/ycwl/basic/utils/JwtTokenUtil.java index 90930cd..9a7fba2 100644 --- a/src/main/java/com/ycwl/basic/utils/JwtTokenUtil.java +++ b/src/main/java/com/ycwl/basic/utils/JwtTokenUtil.java @@ -71,11 +71,7 @@ public class JwtTokenUtil { public static JwtInfo getWorker() { ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = servletRequestAttributes.getRequest(); - String token = getToken(request); - return parsingToken(token); - } - public static String getToken(HttpServletRequest request) { String token = request.getHeader("token"); if (StringUtils.isEmpty(token)) { if (request.getCookies() != null) { @@ -84,8 +80,13 @@ public class JwtTokenUtil { token = cookie.getValue(); } } + if(StringUtils.isEmpty(token)){ + throw new CheckTokenException("用户未登录或登录状态已过期"); + } + }else { + throw new CheckTokenException("用户未登录或登录状态已过期"); } } - return token; + return parsingToken(token); } } diff --git a/src/main/resources/mapper/pc/FaceMapper.xml b/src/main/resources/mapper/pc/FaceMapper.xml index ba8fb9f..c74d2f1 100644 --- a/src/main/resources/mapper/pc/FaceMapper.xml +++ b/src/main/resources/mapper/pc/FaceMapper.xml @@ -70,4 +70,9 @@ from face where id = #{id} + \ No newline at end of file diff --git a/src/main/resources/mapper/pc/OrderMapper.xml b/src/main/resources/mapper/pc/OrderMapper.xml index cbc6fb8..5b475d5 100644 --- a/src/main/resources/mapper/pc/OrderMapper.xml +++ b/src/main/resources/mapper/pc/OrderMapper.xml @@ -12,6 +12,7 @@ + @@ -23,7 +24,6 @@ - @@ -37,6 +37,7 @@ + @@ -48,7 +49,6 @@ - @@ -58,13 +58,13 @@ - insert into `order`(id, member_id, openid,price, pay_price, remark, broker_id, promo_code) - VALUES (#{id}, #{memberId}, #{openid},#{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode}) + insert into `order`(id, member_id, openid,price, pay_price, remark, broker_id, promo_code,goods_type,scenic_id) + VALUES (#{id}, #{memberId}, #{openid},#{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode},#{goodsType},#{scenicId}) - insert into order_item(id, order_id, goods_type, goods_id) VALUES + insert into order_item(id, order_id, goods_id) VALUES - (#{item.id}, #{item.orderId}, #{item.goodsType}, #{item.goodsId}) + (#{item.id}, #{item.orderId}, #{item.goodsId}) @@ -105,12 +105,12 @@ \ No newline at end of file