ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEventUser.java
@@ -34,122 +34,11 @@ */ @TableField("user_id") @ApiModelProperty("用户id") private Integer user_id; private Long user_id; /** * 门店id * 抽奖活动id */ @TableField("shop_id") @ApiModelProperty("门店id") private Integer shopId; /** * 抽奖名称 */ @TableField("name") @ApiModelProperty("抽奖名称") private String name; /** * 活动简介名称 */ @TableField("activity_profile") @ApiModelProperty("活动简介名称") private String activityProfile; /** * 开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖) */ @TableField("activity_type") @ApiModelProperty("开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖)") private Integer activityType; /** * 可抽奖次数 */ @TableField("times") @ApiModelProperty("可抽奖次数") private Integer times; /** * 活动开始时间 */ @TableField("start_time") @ApiModelProperty("活动开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; /** * 活动结束时间 */ @TableField("end_time") @ApiModelProperty("活动结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; /** * 分享抽奖间隔天数 */ @TableField("interval_time") @ApiModelProperty("分享抽奖间隔天数") private Integer intervalTime; /** * 下单支付金额 */ @TableField("pay_money") @ApiModelProperty("下单支付金额") private BigDecimal payMoney; /** * 答题抽奖正确率% */ @TableField("accuracy") @ApiModelProperty("答题抽奖正确率%") private BigDecimal accuracy; /** * 答题时间限制(分钟) */ @TableField("answering_time") @ApiModelProperty("答题时间限制(分钟)") private Integer answeringTime; /** * 封面图 */ @TableField("cover_image") @ApiModelProperty("封面图") private String coverImage; /** * 详情介绍 */ @TableField("activity_content") @ApiModelProperty("详情介绍") private String activityContent; /** * 微信小程序二维码 */ @TableField("wx_mini_program_qr_code") @ApiModelProperty("微信小程序二维码") private String wxMiniProgramQrCode; /** * 删除标记 */ @TableField("del_flag") private Integer delFlag; /** * 创建用户id */ @TableField("create_user_id") private Long createUserId; /** * 创建时间 */ @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; /** * 更新用户id */ @TableField("update_user_id") private Long updateUserId; /** * 更新时间 */ @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @TableField(exist = false) @ApiModelProperty("奖品列表") private List<TLotteryEventPrize> prizes; @TableField("lottery_event_id") @ApiModelProperty("抽奖活动id") private String lotteryEventId; } ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/LotteryEventFallbackFactory.java
@@ -3,6 +3,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.service.LotteryEventClient; import org.springframework.cloud.openfeign.FallbackFactory; @@ -21,6 +22,11 @@ public R<List<TLotteryEvent>> getLotteryEventList(GetLotteryEventList getLotteryEventList) { return R.fail("根据开启方式获取活动列表失败:" + cause.getMessage()); } @Override public R addLotteryEventUser(TLotteryEventUser lotteryEventUser) { return R.fail("添加用户抽奖弹框记录失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/service/LotteryEventClient.java
@@ -4,6 +4,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.domain.TUserLotteryEvent; import com.ruoyi.goods.api.factory.LotteryEventFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; @@ -29,4 +30,16 @@ */ @PostMapping("/lotteryEvent/getLotteryEventList") R<List<TLotteryEvent>> getLotteryEventList(@RequestBody GetLotteryEventList getLotteryEventList); /** * 添加用户抽奖弹框记录 * @param lotteryEventUser * @return */ @PostMapping("/lotteryEvent/addLotteryEventUser") R addLotteryEventUser(@RequestBody TLotteryEventUser lotteryEventUser); } ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -6,11 +6,14 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; import com.ruoyi.system.api.model.AppMiniLoginDto; @@ -85,6 +88,12 @@ if (data.size() > 0) { miniToken.put("lotteryDraw", true); miniToken.put("lotteryEventId", data.get(0).getId()); //将数据添加到普通抽奖列表中 TLotteryEventUser lotteryEventUser = new TLotteryEventUser(); lotteryEventUser.setId(IdUtils.simpleUUID()); lotteryEventUser.setLotteryEventId(data.get(0).getId()); lotteryEventUser.setUser_id(SecurityUtils.getUserId()); lotteryEventClient.addLotteryEventUser(lotteryEventUser); } return R.ok(miniToken); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/LotteryEventController.java
@@ -3,10 +3,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.domain.TUserLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.goods.service.lottery.ILotteryEventService; import com.ruoyi.goods.service.lottery.ILotteryEventUserService; import com.ruoyi.goods.service.lottery.IUserLotteryEventService; import org.springframework.web.bind.annotation.*; @@ -28,6 +33,9 @@ @Resource private IUserLotteryEventService userLotteryEventService; @Resource private ILotteryEventUserService lotteryEventUserService; /** @@ -55,5 +63,24 @@ } return R.ok(list); } /** * 添加用户抽奖弹框记录 * @param lotteryEventUser * @return */ @ResponseBody @PostMapping("/addLotteryEventUser") public R addLotteryEventUser(@RequestBody TLotteryEventUser lotteryEventUser){ TLotteryEventUser one = lotteryEventUserService.getOne(new LambdaQueryWrapper<TLotteryEventUser>().eq(TLotteryEventUser::getLotteryEventId, lotteryEventUser.getLotteryEventId()) .eq(TLotteryEventUser::getUser_id, lotteryEventUser.getUser_id())); if(null == one){ lotteryEventUserService.save(lotteryEventUser); } return R.ok(); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventUserMapper.java
@@ -1,6 +1,6 @@ package com.ruoyi.goods.mapper.lottery; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.api.domain.TLotteryEventUser; public interface LotteryEventUserMapper extends BaseMapper<TLotteryEventUser> { ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventUserServiceImpl.java
@@ -1,9 +1,11 @@ package com.ruoyi.goods.service.impl.lottery; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.mapper.lottery.LotteryEventUserMapper; import com.ruoyi.goods.service.lottery.ILotteryEventUserService; import org.springframework.stereotype.Service; @Service public class LotteryEventUserServiceImpl extends ServiceImpl<LotteryEventUserMapper, TLotteryEventUser> implements ILotteryEventUserService { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventUserService.java
@@ -1,7 +1,8 @@ package com.ruoyi.goods.service.lottery; import com.baomidou.mybatisplus.service.IService; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.TLotteryEventUser; public interface ILotteryEventUserService extends IService<TLotteryEventUser> { } ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml
@@ -19,11 +19,12 @@ WHEN NOW() < a.start_time THEN 3 ELSE 4 END as sort from t_lottery_event a left join (select count(1) as num, lottery_event_id from t_user_lottery_event where user_id = #{userId} group by lottery_event_id) b on a.id = b.lottery_event_id where a.del_flag = 0 and a.activity_type in (4, 5) and now() < a.end_time and a.shop_id is null) as aa left join ( select count(1) as num, lottery_event_id from t_user_lottery_event where user_id = #{userId} group by lottery_event_id ) b on a.id = b.lottery_event_id where a.del_flag = 0 and now() < a.end_time and a.shop_id is null and (a.activity_type in (4, 5) or (a.activity_type in (1, 3) and id in (select lottery_event_id from t_lottery_event_user where user_id = #{userId}))) ) as aa order by aa.sort, aa.startTime </select> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.member.domain.dto.AppMemberCouponPageDto; import com.ruoyi.member.domain.pojo.coupon.Coupon; @@ -160,7 +163,14 @@ getLotteryEventList.setUserId(SecurityUtils.getUserId()); List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); if (data.size() > 0) { return R.ok(data.get(0).getId()); //将数据添加到普通抽奖列表中 String id = data.get(0).getId(); TLotteryEventUser lotteryEventUser = new TLotteryEventUser(); lotteryEventUser.setId(IdUtils.simpleUUID()); lotteryEventUser.setLotteryEventId(id); lotteryEventUser.setUser_id(SecurityUtils.getUserId()); lotteryEventClient.addLotteryEventUser(lotteryEventUser); return R.ok(id); } return R.ok(); } @@ -174,8 +184,8 @@ }) public R<Boolean> determineClaimCoupon(@PathVariable("couponId") String couponId){ Long userId = SecurityUtils.getUserId(); MemberCoupon one = memberCouponService.getOne(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId) int count = memberCouponService.count(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId) .eq("user_id", userId).ne("coupon_status", -1)); return R.ok(null != one); return R.ok(0 < count); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppIntegralController.java
@@ -3,9 +3,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.member.domain.vo.AppIntegralRecordPageVo; import com.ruoyi.member.domain.vo.AppIntegralTaskListVo; @@ -104,6 +107,12 @@ map.put("lotteryEventId", tLotteryEvent.getId()); map.put("name", tLotteryEvent.getActivityProfile()); map.put("image", tLotteryEvent.getCoverImage()); //将数据添加到普通抽奖列表中 TLotteryEventUser lotteryEventUser = new TLotteryEventUser(); lotteryEventUser.setId(IdUtils.simpleUUID()); lotteryEventUser.setLotteryEventId(tLotteryEvent.getId()); lotteryEventUser.setUser_id(SecurityUtils.getUserId()); lotteryEventClient.addLotteryEventUser(lotteryEventUser); } return R.ok(map); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java
@@ -4,9 +4,12 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventUser; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.member.domain.dto.AppMemberBrowseDto; import com.ruoyi.member.domain.vo.AppBirthdayCardVo; @@ -71,7 +74,6 @@ getLotteryEventList.setActivityType(3); getLotteryEventList.setUserId(SecurityUtils.getUserId()); List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); Map<String, Object> map = new HashMap<>(); if(data.size() > 0){ TLotteryEvent tLotteryEvent = data.get(0); appUserInfoVo.setLotteryEventId(tLotteryEvent.getId()); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -2256,8 +2256,15 @@ // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 public MerVerifyOrderVo sureVerifyOrderDouYin(MerVerifyOrderDto merVerifyOrderDto) { String phone = merVerifyOrderDto.getPhone(); String name = merVerifyOrderDto.getName(); String orderId = merVerifyOrderDto.getOrderId(); Long shopId = merVerifyOrderDto.getShopId(); if(StringUtils.isEmpty(phone)){ throw new ServiceException("请填写核销用户电话号码"); } if(StringUtils.isEmpty(name)){ throw new ServiceException("请填写核销用户姓名"); } //获取核销商户 Shop shop = remoteShopService.getShop(shopId).getData(); CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId); @@ -2289,7 +2296,6 @@ } Member member = remoteMemberService.getMemberByMobile(phone).getData();//绑定用户判断核销商户 if(null == member){ String name = merVerifyOrderDto.getName(); //创建新用户 String memberId = IdUtils.simpleUUID(); SysUser sysUser = new SysUser(); @@ -2568,8 +2574,15 @@ // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 public MerVerifyOrderVo sureVerifyOrderKuaiShou(MerVerifyOrderDto merVerifyOrderDto) { String phone = merVerifyOrderDto.getPhone(); String name = merVerifyOrderDto.getName(); String orderId = merVerifyOrderDto.getOrderId(); Long shopId = merVerifyOrderDto.getShopId(); if(StringUtils.isEmpty(phone)){ throw new ServiceException("请填写核销用户电话号码"); } if(StringUtils.isEmpty(name)){ throw new ServiceException("请填写核销用户姓名"); } //获取核销商户 Shop shop = remoteShopService.getShop(shopId).getData(); VerifyPrepareDataNew data = KSVerifyUtil.certificatePrepare(redisService, orderId);