ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java
@@ -65,6 +65,11 @@ @TableField("activity_number") private Integer activityNumber; /** * 活动库存 */ @TableField("activity_stock") private Integer activityStock; /** * 活动已售数量 */ @TableField("sales_number") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java
@@ -86,6 +86,10 @@ @ApiModelProperty(value = "结束时间戳") private long timestamp; @ApiModelProperty(value = "活动开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date activityStartTime; @ApiModelProperty(value = "活动截止时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date activityDeadline; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java
@@ -61,6 +61,9 @@ private long timestamp; @ApiModelProperty(value = "结束时间") private Date startTime; @ApiModelProperty(value = "结束时间") private Date endTime; @ApiModelProperty(value = "限购标记0否1是") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -172,6 +172,7 @@ activity.setApplicableShop(result); } } activity.setActivityStatus(0); this.saveOrUpdate(activity); // 获取活动商品信息 List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList(); @@ -186,6 +187,7 @@ activityGoods.setActivityPrice(dto.getActivityPrice()); activityGoods.setActivitySubscription(dto.getActivitySubscription()); activityGoods.setActivityNumber(dto.getActivityNumber()); activityGoods.setActivityStock(dto.getActivityNumber()); activityGoods.setSalesNumber(0); activityGoods.setActivityDeadline(activity.getActivityEndTime()); activityGoods.setSellOutFlag(0); @@ -466,7 +468,7 @@ activityGoodsGetVo.setActivitySubscription(activityGoods.getActivitySubscription()); activityGoodsGetVo.setActivityStatus(activity.getActivityStatus()); //剩余库存 Integer availableBuyNum = activityGoods.getActivityNumber(); Integer availableBuyNum = activityGoods.getActivityStock(); //限购判断 if(activityGoods.getPurchaseLimitationFlag()==1){ Integer buyNum = activityRecordService.getUserActivityGoodsNum(goodsId,activityId,activityGoodsGetDto.getUserId()); @@ -552,7 +554,7 @@ List<ActivityGoods> activityGoodsList = activityGoodsService.listByActivityId(activityId); if(activityGoodsList!=null&&!activityGoodsList.isEmpty()){ for(ActivityGoods activityGoods : activityGoodsList){ redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+activityGoods.getGoodsId(),activityGoods.getActivityNumber()); redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+activityGoods.getGoodsId(),activityGoods.getActivityStock()); } } this.saveOrUpdate(activity); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -187,6 +187,7 @@ //活动商品判断 if(appGoodsInfoGetDto.getActivityFlag()==1){ ActivityGoods activityGoods = activityGoodsService.getByGoodsId(appGoodsInfoGetDto.getActivityId(),goods.getGoodsId()); Activity activity = activityService.getById(appGoodsInfoGetDto.getActivityId()); //原价取较大值 if(shopGoods!=null&&goods.getSalesPrice().compareTo(shopGoods.getSalesPrice())>0){ appGoodsInfoVo.setSalesPrice(goods.getSalesPrice()); @@ -194,8 +195,9 @@ appGoodsInfoVo.setActivityFlag(1); appGoodsInfoVo.setActivityPrice(activityGoods.getActivityPrice()); appGoodsInfoVo.setSalesNum(activityGoods.getSalesNumber()); appGoodsInfoVo.setActivityDeadline(activityGoods.getActivityDeadline()); appGoodsInfoVo.setTimestamp(activityGoods.getActivityDeadline().getTime()); appGoodsInfoVo.setActivityStartTime(activity.getActivityStartTime()); appGoodsInfoVo.setActivityDeadline(activity.getActivityEndTime()); appGoodsInfoVo.setTimestamp(activity.getActivityEndTime().getTime()); Integer availableBuyNum = 0; //售罄判断 if(activityGoods.getActivityNumber().equals(activityGoods.getSalesNumber())){ ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityGoodsMapper.xml
@@ -100,5 +100,6 @@ INNER JOIN t_goods tg ON tag.goods_id = tg.goods_id WHERE tag.del_flag = 0 AND tag.activity_id = #{activityId} ORDER BY tag.ag_id </select> </mapper> ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -145,7 +145,7 @@ <update id="addActivityGoodsStock"> UPDATE t_activity_goods SET sales_number = sales_number - #{param.changeNum}, activity_number = activity_number + #{param.changeNum}, activity_stock = activity_stock + #{param.changeNum}, sell_out_flag = 0, sell_out_time = NULL WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId} @@ -154,10 +154,10 @@ <update id="subActivityGoodsStock"> UPDATE t_activity_goods SET sales_number = sales_number + #{param.changeNum}, activity_number = activity_number - #{param.changeNum}, sell_out_flag = CASE WHEN activity_number = 0 THEN 1 ELSE sell_out_flag END, sell_out_time = CASE WHEN activity_number = 0 THEN NOW() ELSE sell_out_time END WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId} AND activity_number >= #{param.changeNum} activity_stock = activity_stock - #{param.changeNum}, sell_out_flag = CASE WHEN activity_stock - #{param.changeNum} = 0 THEN 1 ELSE sell_out_flag END, sell_out_time = CASE WHEN activity_stock - #{param.changeNum} = 0 THEN NOW() ELSE sell_out_time END WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId} AND activity_stock >= #{param.changeNum} </update> <select id="checkSellOut" resultType="java.lang.Integer"> ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -497,14 +497,17 @@ tg.goods_nurses goodsNurses, tag.activity_number activityNumber, tag.sales_number salesNumber, tag.activity_deadline endTime, ta.activity_start_time startTime, ta.activity_end_time endTime, tag.purchase_limitation_flag purchaseLimitationFlag, tag.limit_number limitNumber FROM t_activity_goods tag INNER JOIN t_activity ta ON ta.activity_id = tag.activity_id INNER JOIN t_goods tg ON tg.goods_id = tag.goods_id LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId} WHERE tag.del_flag = 0 AND tg.del_flag = 0 AND tg.goods_status = 1 AND tag.activity_id = #{param.activityId} ORDER BY tag.ag_id </select> <select id="listGoodsNameByGoodsClass" resultType="java.lang.String"> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java
@@ -62,4 +62,7 @@ } return "SUCCESS"; } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java
@@ -5,6 +5,7 @@ import com.ruoyi.system.api.domain.dto.MerEditUserDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -22,6 +23,9 @@ public class StaffController { @Resource private SysStaffService sysStaffService; @Resource private SysWxCpService sysWxCpService; /** * @description 判断员工是否领导 @@ -52,4 +56,17 @@ sysStaffService.editSysStaffInfo(merEditUserDto); return R.ok(); } @PostMapping("/updateDept") public R updateDept(){ sysWxCpService.updateDept(); return R.ok(); } @PostMapping("/sendMessage") public R sendMessage(){ sysWxCpService.sendMessage(); return R.ok(); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
@@ -118,6 +118,7 @@ public void sendTaskMessage(){ //获取员工任务列表 List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData(); log.info("定时发送通知任务任务列表---"+userTaskMsgVoList.size()); WxCpMessage message; SysStaff sysStaff; if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){ @@ -140,4 +141,31 @@ } } } @Override public void updateDept(){ WxCpDepart group = new WxCpDepart(); group.setId(240L); group.setName("软件开发测试部门"); try { wxCpService.getDepartmentService().update(group); } catch (WxErrorException e) { throw new RuntimeException(e); } } @Override public void sendMessage(){ WxCpMessage message; message = new WxCpMessage(); message.setAgentId(1000024); message.setToUser("jiangqiushi"); message.setMsgType("text"); message.setContent("今日需要任务跟进,请注意!"); try { WxCpMessageSendResult result = wxCpService.getMessageService().send(message); } catch (WxErrorException e) { throw new RuntimeException(e); } } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java
@@ -34,4 +34,9 @@ * @return void */ void sendTaskMessage(); void updateDept(); void sendMessage(); } ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -48,9 +48,9 @@ agentId: 1000024 agentSecret: -wuQ2EBxNT9BJa40LdpFqyxI_8RqrZTCUNiabzBasi8 authorizeState: HONGRUITANG suiteSecret: "" token: "HaiHeng2023" encodingAESKey: "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C" suiteSecret: HoHhls3QUFESA2wDypkaWvldYYHBciwZJ2zEpPVrjNx token: HaiHeng2023 encodingAESKey: jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java
@@ -2,6 +2,7 @@ import com.ruoyi.system.service.staff.SysWxCpService; import me.chanjar.weixin.cp.api.WxCpService; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -22,7 +23,11 @@ @Resource private SysWxCpService sysWxCpService; @Resource private WxCpService wxCpService; /*@Test public void main() { public void main() throws WxErrorException { }*/ }