From 405b48d9d3b1bb094c1171666432f0cbe85812e0 Mon Sep 17 00:00:00 2001 From: longbinbin <2284496322@qq.com> Date: Thu, 12 Dec 2024 09:57:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug,=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1=E7=9B=B8=E5=85=B3=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/mobile/AppFaceController.java | 1 + .../controller/mobile/AppGoodsController.java | 4 +- .../controller/mobile/AppIndexController.java | 24 +++---- .../mobile/AppStatisticsController.java | 34 ++++++++++ .../ycwl/basic/mapper/StatisticsMapper.java | 8 +++ .../ycwl/basic/mapper/pc/ScenicMapper.java | 2 +- .../mobile/goods/VideoGoodsDetailVO.java | 2 +- .../model/mobile/scenic/ScenicAppVO.java | 2 + .../mobile/scenic/content/ContentPageVO.java | 2 + .../model/mobile/statistic/AppSta1VO.java | 24 +++++++ .../mobile/statistic/CommonQueryReq.java | 21 +++++++ .../basic/model/pc/order/req/OrderAddReq.java | 26 ++++---- .../pc/scenic/req/ScenicAddOrUpdateReq.java | 2 + .../model/pc/scenic/resp/ScenicRespVO.java | 4 ++ .../model/pc/source/resp/SourceRespVO.java | 2 + .../impl/mobile/AppScenicServiceImpl.java | 7 ++- .../impl/mobile/AppStatisticsServiceImpl.java | 25 ++++++++ .../service/impl/mobile/GoodsServiceImpl.java | 31 ++++++--- .../service/impl/pc/OrderServiceImpl.java | 63 ++++++++++--------- .../service/mobile/AppStatisticsService.java | 14 +++++ src/main/resources/mapper/pc/OrderMapper.xml | 14 ++--- src/main/resources/mapper/pc/ScenicMapper.xml | 17 +++-- src/main/resources/mapper/pc/SourceMapper.xml | 3 +- .../resources/mapper/pc/StatisticsMapper.xml | 4 ++ .../resources/mapper/pc/TemplateMapper.xml | 6 +- src/main/resources/mapper/pc/VideoMapper.xml | 4 +- 26 files changed, 256 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/ycwl/basic/controller/mobile/AppStatisticsController.java create mode 100644 src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java create mode 100644 src/main/java/com/ycwl/basic/model/mobile/statistic/AppSta1VO.java create mode 100644 src/main/java/com/ycwl/basic/model/mobile/statistic/CommonQueryReq.java create mode 100644 src/main/java/com/ycwl/basic/service/impl/mobile/AppStatisticsServiceImpl.java create mode 100644 src/main/java/com/ycwl/basic/service/mobile/AppStatisticsService.java create mode 100644 src/main/resources/mapper/pc/StatisticsMapper.xml 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 abd013c..afebee9 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java @@ -40,6 +40,7 @@ AppFaceController { return faceService.faceUPload(file,scenicId); } + @ApiOperation("查询人脸照片信息") @GetMapping("/getFaceData") public ApiResponse getFaceData() { JwtInfo worker = JwtTokenUtil.getWorker(); diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java index 8ffbf29..5a08d1e 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java @@ -54,9 +54,9 @@ public class AppGoodsController { /** * 查询用户当前景区的视频合成任务状态 * @param scenicId 景区id - * @return 1 合成中 2 合成成功 + * @return 0没有任务 1 合成中 2 合成成功 */ - @ApiOperation("查询用户当前景区的整体视频合成任务状态 1 合成中 2 合成成功 ") + @ApiOperation("查询用户当前景区的整体视频合成任务状态 0没有任务 1 合成中 2 合成成功 ") @GetMapping("/getTaskStatus/{scenicId}") public ApiResponse getAllTaskStatus(@PathVariable("scenicId") Long scenicId) { JwtInfo worker = JwtTokenUtil.getWorker(); diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppIndexController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppIndexController.java index 3bf82b2..e4b2f4b 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppIndexController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppIndexController.java @@ -30,19 +30,19 @@ public class AppIndexController { * * @return */ - @ApiOperation(value = "首页景区列表", notes = "首页景区列表") - @PostMapping("/scenicList") - @IgnoreToken - public ApiResponse> scenicList(@RequestBody ScenicIndexVO scenicIndexVO) { - return scenicService.scenicList(scenicIndexVO); - } +// @ApiOperation(value = "首页景区列表", notes = "首页景区列表") +// @PostMapping("/scenicList") +// @IgnoreToken +// public ApiResponse> scenicList(@RequestBody ScenicIndexVO scenicIndexVO) { +// return scenicService.scenicList(scenicIndexVO); +// } - @ApiOperation(value = "顶部状态", notes = "顶部状态") - @GetMapping("/topState") - @IgnoreToken - public ApiResponse topState() { - return scenicService.topState(); - } +// @ApiOperation(value = "顶部状态", notes = "顶部状态") +// @GetMapping("/topState") +// @IgnoreToken +// public ApiResponse topState() { +// return scenicService.topState(); +// } } diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppStatisticsController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppStatisticsController.java new file mode 100644 index 0000000..0487ba6 --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppStatisticsController.java @@ -0,0 +1,34 @@ +package com.ycwl.basic.controller.mobile; + +import com.ycwl.basic.model.mobile.statistic.AppSta1VO; +import com.ycwl.basic.model.mobile.statistic.CommonQueryReq; +import com.ycwl.basic.service.mobile.AppStatisticsService; +import com.ycwl.basic.utils.ApiResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @Author:longbinbin + * @Date:2024/12/11 18:08 + */ +@RestController +@RequestMapping("/api/mobile/statistics/v1") +@Api(tags = "数据统计相关接口") +public class AppStatisticsController { + + @Autowired + private AppStatisticsService statisticsService; + + @ApiOperation("支付订单金额、预览_支付转化率、扫码_付费用户转化率") + @PostMapping("/one") + public ApiResponse oneStatistics(@RequestBody CommonQueryReq query) { + + return statisticsService.oneStatistics(query); + } + + + +} diff --git a/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java b/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java new file mode 100644 index 0000000..7298f82 --- /dev/null +++ b/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java @@ -0,0 +1,8 @@ +package com.ycwl.basic.mapper; + +/** + * @Author:longbinbin + * @Date:2024/12/12 9:51 + */ +public interface StatisticsMapper { +} diff --git a/src/main/java/com/ycwl/basic/mapper/pc/ScenicMapper.java b/src/main/java/com/ycwl/basic/mapper/pc/ScenicMapper.java index ab84514..f80389f 100644 --- a/src/main/java/com/ycwl/basic/mapper/pc/ScenicMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/pc/ScenicMapper.java @@ -55,7 +55,7 @@ public interface ScenicMapper { List appList(ScenicReqQuery scenicReqQuery); - ApiResponse getAppById(Long id); + ScenicRespVO getAppById(Long id); /** * 通过经纬度计算景区距离 diff --git a/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java b/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java index 2cf15be..c5b591e 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java @@ -40,7 +40,7 @@ public class VideoGoodsDetailVO { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; @ApiModelProperty("价格") - private BigDecimal price; + private String price; @ApiModelProperty("是否已购买 0否 1是") private Integer isBuy; @ApiModelProperty("镜头数") diff --git a/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicAppVO.java b/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicAppVO.java index 654a77c..82391a3 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicAppVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicAppVO.java @@ -29,6 +29,8 @@ public class ScenicAppVO { */ @ApiModelProperty("景区介绍") private String introduction; + @ApiModelProperty("封面图") + private String coverUrl; /** * 经度 */ diff --git a/src/main/java/com/ycwl/basic/model/mobile/scenic/content/ContentPageVO.java b/src/main/java/com/ycwl/basic/model/mobile/scenic/content/ContentPageVO.java index 3358454..fdc877c 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/scenic/content/ContentPageVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/scenic/content/ContentPageVO.java @@ -31,4 +31,6 @@ public class ContentPageVO { private Long contentId; @ApiModelProperty("模版封面图片 contentType为0或1时才有值") private String templateCoverUrl; + @ApiModelProperty("是否购买:0未购买,1已购买") + private Integer isBuy; } diff --git a/src/main/java/com/ycwl/basic/model/mobile/statistic/AppSta1VO.java b/src/main/java/com/ycwl/basic/model/mobile/statistic/AppSta1VO.java new file mode 100644 index 0000000..350dfc9 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/mobile/statistic/AppSta1VO.java @@ -0,0 +1,24 @@ +package com.ycwl.basic.model.mobile.statistic; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @Author:longbinbin + * @Date:2024/12/11 18:23 + */ +@ApiModel("移动端订单金额、预览_支付转化率、扫码_付费用户转化率统计结果类") +public class AppSta1VO { + @ApiModelProperty("现在的数据 支付订单金额") + private String nowOrderAmount; + @ApiModelProperty("上一期的数据 支付订单金额") + private String previousOrderAmount; + @ApiModelProperty("现在的数据 预览_支付转化率") + private String nowPreviewPay; + @ApiModelProperty("上一期的数据 预览_支付转化率") + private String previousPreviewPay; + @ApiModelProperty("现在的数据 扫码_付费用户转化率") + private String nowScanCodePay; + @ApiModelProperty("上一期的数据 扫码_付费用户转化率") + private String previousScanCodePay; +} diff --git a/src/main/java/com/ycwl/basic/model/mobile/statistic/CommonQueryReq.java b/src/main/java/com/ycwl/basic/model/mobile/statistic/CommonQueryReq.java new file mode 100644 index 0000000..ba58af9 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/mobile/statistic/CommonQueryReq.java @@ -0,0 +1,21 @@ +package com.ycwl.basic.model.mobile.statistic; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/12/11 19:03 + */ +@Data +@ApiModel("移动端公用请求参数") +public class CommonQueryReq { + @ApiModelProperty(value = "查询统计纬度 0今天、1昨天、2-近一周(7天)、3-近30天、4-近1年") + private Integer standard; + private Date startTime; + private Date endTime; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddReq.java b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddReq.java index dd03f05..a405170 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddReq.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderAddReq.java @@ -1,13 +1,11 @@ package com.ycwl.basic.model.pc.order.req; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; -import java.util.Date; import java.util.List; /** @@ -25,7 +23,7 @@ public class OrderAddReq { * 微信openId */ @ApiModelProperty(value = "微信openId", hidden = true) - private Long openId; + private String openid; @ApiModelProperty("景区id") private Long scenicId; @@ -44,17 +42,17 @@ public class OrderAddReq { */ @ApiModelProperty("备注") private String remark; -// /** -// * 推客id -// */ -// @ApiModelProperty("推客id") -// private Long brokerId; -// /** -// * 推客优惠码 -// */ -// @ApiModelProperty("推客优惠码") -// private String promoCode; - @ApiModelProperty("订单商品类型 1成片,2源素材") + /** + * 推客id + */ + @ApiModelProperty(value = "推客id",hidden = true) + private Long brokerId; + /** + * 推客优惠码 + */ + @ApiModelProperty(value="推客优惠码",hidden = true) + private String promoCode; + @ApiModelProperty(value = "订单商品类型 1成片,2源素材") private Integer goodsType; @ApiModelProperty("订单商品明细") private List goodsItemList; diff --git a/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java b/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java index eb74a15..1cfe0c9 100644 --- a/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java +++ b/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java @@ -32,6 +32,8 @@ public class ScenicAddOrUpdateReq { */ @ApiModelProperty("景区介绍") private String introduction; + @ApiModelProperty("封面图") + private String coverUrl; /** * 经度 */ diff --git a/src/main/java/com/ycwl/basic/model/pc/scenic/resp/ScenicRespVO.java b/src/main/java/com/ycwl/basic/model/pc/scenic/resp/ScenicRespVO.java index 87d7b7e..6c5eb34 100644 --- a/src/main/java/com/ycwl/basic/model/pc/scenic/resp/ScenicRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/scenic/resp/ScenicRespVO.java @@ -38,6 +38,8 @@ public class ScenicRespVO { */ @ApiModelProperty("景区介绍") private String introduction; + @ApiModelProperty("封面图") + private String coverUrl; /** * 经度 */ @@ -86,4 +88,6 @@ public class ScenicRespVO { private ScenicConfigEntity scenicConfig; @ApiModelProperty("景区源素材价格,元") private BigDecimal price; + @ApiModelProperty("镜头数") + private Integer lensNum; } diff --git a/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java b/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java index d575279..0ff626a 100644 --- a/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java @@ -51,4 +51,6 @@ public class SourceRespVO { private String videoUrl; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; + @ApiModelProperty("是否购买:0未购买,1已购买") + private Integer isBuy; } diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java index 68afd1d..f788d23 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java @@ -79,7 +79,10 @@ public class AppScenicServiceImpl implements AppScenicService { @Override public ApiResponse getDetails(Long id) { - return scenicMapper.getAppById(id); + ScenicRespVO scenicRespVO = scenicMapper.getAppById(id); + ScenicDeviceCountVO scenicDeviceCountVO = deviceMapper.deviceCountByScenicId(id, -1L); + scenicRespVO.setLensNum(scenicDeviceCountVO.getTotalDeviceCount()); + return ApiResponse.success(scenicRespVO); } @Override @@ -138,6 +141,7 @@ public class AppScenicServiceImpl implements AppScenicService { contentPageVO.setContentType(1); contentPageVO.setContentId(videoRespVO.getId()); contentPageVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl()); + contentPageVO.setIsBuy(videoRespVO.getIsBuy()); contentList.add(contentPageVO); videoMap.put(videoRespVO.getTemplateId(),""); }); @@ -172,6 +176,7 @@ public class AppScenicServiceImpl implements AppScenicService { } contentPageVO.setContentType(2); contentPageVO.setSourceType(type); + contentPageVO.setIsBuy(sourceRespVO.getIsBuy()); contentList.add(contentPageVO); }); diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/AppStatisticsServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/AppStatisticsServiceImpl.java new file mode 100644 index 0000000..3bcb01e --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/AppStatisticsServiceImpl.java @@ -0,0 +1,25 @@ +package com.ycwl.basic.service.impl.mobile; + +import com.ycwl.basic.model.mobile.statistic.AppSta1VO; +import com.ycwl.basic.model.mobile.statistic.CommonQueryReq; +import com.ycwl.basic.service.mobile.AppStatisticsService; +import com.ycwl.basic.utils.ApiResponse; +import org.springframework.stereotype.Service; + +/** + * @Author:longbinbin + * @Date:2024/12/12 9:48 + */ +@Service +public class AppStatisticsServiceImpl implements AppStatisticsService { + + /** + * 支付订单金额、预览_支付转化率、扫码_付费用户转化率 + * @param query + * @return + */ + @Override + public ApiResponse oneStatistics(CommonQueryReq query) { + return null; + } +} diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java index 6516d84..c0c26f1 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java @@ -18,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; @@ -63,9 +65,9 @@ public class GoodsServiceImpl implements GoodsService { SourceReqQuery sourceReqQuery = new SourceReqQuery(); - videoReqQuery.setScenicId(query.getScenicId()); - videoReqQuery.setIsBuy(query.getIsBuy()); - videoReqQuery.setMemberId(query.getMemberId()); + sourceReqQuery.setScenicId(query.getScenicId()); + sourceReqQuery.setIsBuy(query.getIsBuy()); + sourceReqQuery.setMemberId(query.getMemberId()); //查询源素材 List sourceList = sourceMapper.listGroupByType(sourceReqQuery); sourceList.forEach(sourceRespVO -> { @@ -111,6 +113,7 @@ public class GoodsServiceImpl implements GoodsService { int i=1; for (SourceRespVO sourceRespVO : list) { GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); + goodsDetailVO.setGoodsId(sourceRespVO.getId()); String shootingTime = DateUtils.format(sourceRespVO.getCreateTime(), "yyyy.MM.dd HH:mm:ss"); if(i<10){ goodsDetailVO.setGoodsName(goodsNamePrefix +"0"+i+" "+shootingTime); @@ -127,6 +130,7 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setVideoUrl(sourceRespVO.getVideoUrl()); goodsDetailVO.setUrl(sourceRespVO.getUrl()); goodsDetailVO.setCreateTime(sourceRespVO.getCreateTime()); + goodsDetailVOList.add(goodsDetailVO); i++; } @@ -185,7 +189,9 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl()); goodsDetailVO.setCreateTime(videoRespVO.getCreateTime()); BigDecimal templatePrice = videoRespVO.getTemplatePrice(); - goodsDetailVO.setPrice(templatePrice==null ? null : templatePrice.setScale(2)); + // 使用DecimalFormat格式化输出 + DecimalFormat df = new DecimalFormat("0.00"); + goodsDetailVO.setPrice(templatePrice==null?"":df.format(templatePrice.setScale(2, RoundingMode.HALF_UP))); goodsDetailVO.setIsBuy(videoRespVO.getIsBuy()); ScenicDeviceCountVO scenicDeviceCountVO = deviceMapper.deviceCountByScenicId(videoRespVO.getScenicId(), -1L); goodsDetailVO.setLensNum(scenicDeviceCountVO.getTotalDeviceCount()); @@ -195,18 +201,23 @@ public class GoodsServiceImpl implements GoodsService { /** * 查询用户当前景区的视频合成任务状态 * @param scenicId 景区id - * @return 1 合成中 2 合成成功 + * @return 0没有任务 1 合成中 2 合成成功 */ @Override public ApiResponse getAllTaskStatus(Long userId, Long scenicId) { TaskReqQuery taskReqQuery = new TaskReqQuery(); taskReqQuery.setMemberId(userId); taskReqQuery.setScenicId(scenicId); + int allCount=taskMapper.countTask(taskReqQuery); + if(allCount==0){//没有任务 + return ApiResponse.success(0); + } taskReqQuery.setStatus(2); int count=taskMapper.countTask(taskReqQuery); - if(count>0){ + + if(count>0){//有任务在进行中 return ApiResponse.success(1); - }else { + }else {//没有任务在进行中 return ApiResponse.success(2); } } @@ -215,7 +226,11 @@ public class GoodsServiceImpl implements GoodsService { public ApiResponse getTemplateTaskStatus(Long userId, Long templateId) { TaskReqQuery taskReqQuery = new TaskReqQuery(); taskReqQuery.setMemberId(userId); - taskReqQuery.setScenicId(templateId); + taskReqQuery.setTemplateId(templateId); + int allCount=taskMapper.countTask(taskReqQuery); + if(allCount==0){//没有任务 + return ApiResponse.success(0); + } taskReqQuery.setStatus(2); int count=taskMapper.countTask(taskReqQuery); if(count>0){ diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java index c9f6c72..ec71e4a 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java @@ -9,10 +9,8 @@ import com.ycwl.basic.enums.GoodsTypeEnum; import com.ycwl.basic.enums.OrderStateEnum; import com.ycwl.basic.enums.SourceTypeNameEnum; import com.ycwl.basic.exception.AppException; -import com.ycwl.basic.mapper.pc.OrderMapper; -import com.ycwl.basic.mapper.pc.OrderOperationMapper; -import com.ycwl.basic.mapper.pc.SourceMapper; -import com.ycwl.basic.mapper.pc.VideoMapper; +import com.ycwl.basic.mapper.pc.*; +import com.ycwl.basic.model.jwt.JwtInfo; import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq; import com.ycwl.basic.model.mobile.order.OrderAppPageReq; @@ -31,12 +29,12 @@ import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.wx.WXPayOrderReqVO; import com.ycwl.basic.model.wx.WxPayRespVO; -import com.ycwl.basic.service.mobile.AppMemberService; import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.service.mobile.WxPayService; import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.BigDecimalUtil; +import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.SnowFlakeUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -67,7 +65,7 @@ public class OrderServiceImpl implements OrderService { private WxPayService wxPayService; @Autowired - private AppMemberService memberService; + private MemberMapper memberMapper; @Autowired private GoodsService goodsService; @Autowired @@ -96,20 +94,35 @@ public class OrderServiceImpl implements OrderService { public ApiResponse add(OrderAddReq order) throws Exception { Long orderId = SnowFlakeUtil.getLongId(); order.setId(orderId); + JwtInfo worker = JwtTokenUtil.getWorker(); + Long userId = worker.getUserId(); + MemberRespVO memberRespVO = memberMapper.getById(userId); + order.setMemberId(userId); + order.setOpenid(memberRespVO.getOpenId()); + + /* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/ + List goodsItemList = order.getGoodsItemList(); + GoodsDetailVO goodsDetailVO = goodsItemList.get(NumberConstant.ZERO); + GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq(); + goodsPriceQueryReq.setGoodsId(goodsDetailVO.getGoodsId()); + goodsPriceQueryReq.setGoodsType(order.getGoodsType()); + goodsPriceQueryReq.setScenicId(order.getScenicId()); + BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq).getData(); + order.setPrice(price); + order.setPayPrice(price); + int add = orderMapper.add(order); if (add == NumberConstant.ZERO) { return ApiResponse.fail("订单添加失败"); } else { - List goodsItemList = order.getGoodsItemList(); - GoodsDetailVO goodsDetailVO = goodsItemList.get(NumberConstant.ZERO); - Integer goodsType = goodsDetailVO.getGoodsType(); + Integer goodsType = order.getGoodsType(); List orderItems = new ArrayList<>(); goodsItemList.forEach(goodsDto -> { Long goodsId = goodsDto.getGoodsId(); OrderItemEntity orderItemEntity = new OrderItemEntity(); orderItemEntity.setId(SnowFlakeUtil.getLongId()); orderItemEntity.setOrderId(orderId); - orderItemEntity.setGoodsType(goodsDto.getGoodsType()); + orderItemEntity.setGoodsType(goodsType); orderItemEntity.setGoodsId(goodsId); orderItems.add(orderItemEntity); @@ -132,23 +145,22 @@ public class OrderServiceImpl implements OrderService { return ApiResponse.fail("订单添加失败"); } - //封装微信支付请求 - WxPayRespVO wxPayRespVO = initiatePayment(orderId, goodsDetailVO); - return ApiResponse.success(wxPayRespVO); + //TODO 封装微信支付请求 +// WxPayRespVO wxPayRespVO = initiatePayment(order, goodsDetailVO); +// return ApiResponse.success(wxPayRespVO); + return ApiResponse.success(null); } } /** * 发起支付 - * @param orderId 订单id + * @param order 订单 * @param goodsDetailVO 商品详情 * @return 支付请求结果 */ - private WxPayRespVO initiatePayment(Long orderId,GoodsDetailVO goodsDetailVO) throws Exception { + private WxPayRespVO initiatePayment(OrderAddReq order,GoodsDetailVO goodsDetailVO) throws Exception { WXPayOrderReqVO wxPayOrderReqVO = new WXPayOrderReqVO(); - - Integer goodsType = goodsDetailVO.getGoodsType(); - Long goodsId = goodsDetailVO.getGoodsId(); + Integer goodsType = order.getGoodsType(); String goodsName = null; if (goodsType == NumberConstant.ONE) { @@ -158,18 +170,9 @@ public class OrderServiceImpl implements OrderService { goodsName = SourceTypeNameEnum.getRemark(sourceType); } - /* 成片的时候子订单只会有一个,素材的时候 子订单多个且价格与子订单数量无关,只与子订单商品对应景区定义的价格相同*/ - GoodsPriceQueryReq goodsPriceQueryReq = new GoodsPriceQueryReq(); - goodsPriceQueryReq.setGoodsId(goodsId); - goodsPriceQueryReq.setGoodsType(goodsType); - goodsPriceQueryReq.setScenicId(goodsDetailVO.getScenicId()); - BigDecimal price = goodsService.queryPrice(goodsPriceQueryReq).getData(); - - MemberRespVO memberRespVO = memberService.getUserInfo().getData(); - - wxPayOrderReqVO.setOpenId(memberRespVO.getOpenId()) - .setOrderSn(orderId) - .setTotalPrice(BigDecimalUtil.convertToCents(price)) + wxPayOrderReqVO.setOpenId(order.getOpenid()) + .setOrderSn(order.getId()) + .setTotalPrice(BigDecimalUtil.convertToCents(order.getPrice())) .setGoodsName(goodsName); return wxPayService.createOrder(wxPayOrderReqVO); diff --git a/src/main/java/com/ycwl/basic/service/mobile/AppStatisticsService.java b/src/main/java/com/ycwl/basic/service/mobile/AppStatisticsService.java new file mode 100644 index 0000000..4948f42 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/mobile/AppStatisticsService.java @@ -0,0 +1,14 @@ +package com.ycwl.basic.service.mobile; + +import com.ycwl.basic.model.mobile.statistic.AppSta1VO; +import com.ycwl.basic.model.mobile.statistic.CommonQueryReq; +import com.ycwl.basic.utils.ApiResponse; + +/** + * @Author:longbinbin + * @Date:2024/12/12 9:32 + */ + +public interface AppStatisticsService { + ApiResponse oneStatistics(CommonQueryReq query); +} diff --git a/src/main/resources/mapper/pc/OrderMapper.xml b/src/main/resources/mapper/pc/OrderMapper.xml index e5873a6..2cb59cd 100644 --- a/src/main/resources/mapper/pc/OrderMapper.xml +++ b/src/main/resources/mapper/pc/OrderMapper.xml @@ -21,9 +21,9 @@ - + - + @@ -58,7 +58,7 @@ - select oi.id oiId,oi.order_id orderId,oi.goods_id, sc.name scenicName,t.cover_url coverUrl, if(oi.goods_type='1',t.name,(select count(1) from order_item oi2 where oi2.order_id=oi.order_id)) as goodsName, @@ -120,8 +120,8 @@ delete from `order` where id = #{id} - select s.id, `name`, `phone`, introduction, longitude, latitude, radius, province, city, area, address, `status`, s.create_time, update_time, + select s.id, `name`, `phone`, introduction,cover_url, longitude, latitude, radius, province, city, area, address, `status`, s.create_time, update_time, c.start_time, c.end_time, (select scenic_account.account from scenic_account where scenic_account.scenic_id = s.id and scenic_account.is_super = 1 limit 1) as account, c.is_default, c.create_time createTime2,s.price @@ -111,14 +114,14 @@ @@ -151,6 +154,7 @@ `name`, `phone`, introduction, + cover_url, longitude, latitude, radius, @@ -178,6 +182,7 @@ + diff --git a/src/main/resources/mapper/pc/SourceMapper.xml b/src/main/resources/mapper/pc/SourceMapper.xml index 34df173..7f3e714 100644 --- a/src/main/resources/mapper/pc/SourceMapper.xml +++ b/src/main/resources/mapper/pc/SourceMapper.xml @@ -11,6 +11,7 @@ device_id = #{deviceId}, member_id = #{memberId}, url = #{url}, + is_buy = #{isBuy}, where id = #{id} @@ -43,7 +44,7 @@ where so.id = #{id} - select t.id, t.scenic_id, s.name as scenic_name, t.`name`, cover_url, t.status, t.create_time, t.update_time + select t.id, t.scenic_id, s.name as scenic_name, t.`name`, t.cover_url, t.status, t.create_time, t.update_time from template t left join scenic s on s.id = t.scenic_id @@ -62,12 +62,12 @@ diff --git a/src/main/resources/mapper/pc/VideoMapper.xml b/src/main/resources/mapper/pc/VideoMapper.xml index 25c2761..518e7ef 100644 --- a/src/main/resources/mapper/pc/VideoMapper.xml +++ b/src/main/resources/mapper/pc/VideoMapper.xml @@ -23,7 +23,7 @@