| @@ -8,6 +8,7 @@ import com.iformall.common.ResultData; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.dto.OrderSaveDto; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxCoupon; | |||
| import com.iformall.domain.po.WxCouponChannel; | |||
| import com.iformall.domain.po.WxOrder; | |||
| @@ -18,6 +19,7 @@ import com.iformall.enums.EnumCouponChannelStatus; | |||
| import com.iformall.enums.EnumCouponChannelType; | |||
| import com.iformall.enums.EnumUserType; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.WxCUserBasicInfoService; | |||
| import com.iformall.service.WxCUserService; | |||
| import com.iformall.service.WxCouponChannelService; | |||
| import com.iformall.service.WxCouponService; | |||
| @@ -56,6 +58,9 @@ public class WxOrderController extends BaseController { | |||
| @Autowired | |||
| private WxCouponService wxCouponService; | |||
| @Autowired | |||
| private WxCUserBasicInfoService wxCUserBasicInfoService; | |||
| @ApiOperation("分页列表接口") | |||
| @GetMapping("list") | |||
| @@ -166,6 +171,10 @@ public class WxOrderController extends BaseController { | |||
| try { | |||
| WxCUser user = wxCUserService.getById(orderSaveDto.getUserId()); | |||
| if(null == user) { | |||
| logger.error("wxcuser未找到:"+orderSaveDto.getUserId()); | |||
| return new ResultData(ErrorCode.COUPON_IS_EMPTY); | |||
| } | |||
| //用于标记当前操作人为A端用户 | |||
| user.setOperatorType(EnumUserType.MALLUSER.getCode()); | |||
| user.setOperatorId(getUserId()); | |||
| @@ -177,8 +186,15 @@ public class WxOrderController extends BaseController { | |||
| if (!wxOrderService.checkCouponIsFree(coupon)) { | |||
| return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); | |||
| } | |||
| if(!user.isBasicInfo()) { | |||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); | |||
| } | |||
| WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(orderSaveDto.getUserId()); | |||
| if (null == basicInfo) { | |||
| return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"会员用户未找到. "+orderSaveDto.getUserId()); | |||
| } | |||
| // 免费券 | |||
| order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); | |||
| order = wxOrderService.saveFreeOrderForCoupon(basicInfo, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); | |||
| return new ResultData(order); | |||
| } catch (MallinkException e) { | |||
| logger.error(e.getMessage()); | |||
| @@ -54,7 +54,7 @@ spring: | |||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| bucketname: formall | |||
| filehost: malinkadmin | |||
| filedomain: https://formall.oss-accelerate.aliyuncs.com | |||
| filedomain: https://formall.oss-cn-beijing.aliyuncs.com | |||
| mail: | |||
| host: smtp.exmail.qq.com | |||
| @@ -342,7 +342,15 @@ public class WxMicroPayController extends BaseController { | |||
| WxOrder order = null; | |||
| try { | |||
| order = wxOrderService.saveMicroPayOrderV2(user, cUser, payment); | |||
| if (!cUser.isBasicInfo()) { | |||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); | |||
| } | |||
| WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(cUser.getUserId()); | |||
| if ( null == basicInfo) { | |||
| logger.error("会员用户未找到."+cUser.getUserId()); | |||
| return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"会员用户未找到."+cUser.getUserId()); | |||
| } | |||
| order = wxOrderService.saveMicroPayOrderV2(user, basicInfo, payment); | |||
| } catch (MallinkException e) { | |||
| logger.error("saveMicopayOrder 1" + e.getMessage()); | |||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||
| @@ -106,6 +106,23 @@ public class RedisConfig extends CachingConfigurerSupport { | |||
| template.setConnectionFactory(connectionFactory); | |||
| return template; | |||
| } | |||
| @Bean("cUserBasicInfoRedisTemplate") | |||
| public RedisTemplate<String, WxCUserBasicInfo> getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { | |||
| RedisTemplate<String, WxCUserBasicInfo> template = new RedisTemplate<String, WxCUserBasicInfo>(); | |||
| Jackson2JsonRedisSerializer<WxCUserBasicInfo> j = new Jackson2JsonRedisSerializer<WxCUserBasicInfo>(WxCUserBasicInfo.class); | |||
| // value值的序列化 | |||
| template.setValueSerializer(j); | |||
| template.setHashKeySerializer(j); | |||
| // key的序列化 | |||
| template.setKeySerializer(new StringRedisSerializer()); | |||
| template.setHashKeySerializer(new StringRedisSerializer()); | |||
| template.setConnectionFactory(connectionFactory); | |||
| return template; | |||
| } | |||
| @Bean("mallRedisTemplate") | |||
| public RedisTemplate<String, WxMall> getMallRedisTemplate(RedisConnectionFactory connectionFactory) { | |||
| @@ -32,6 +32,9 @@ public class WxCouponPasswordController extends BaseController { | |||
| @Autowired | |||
| private WxOrderService orderService; | |||
| @Autowired | |||
| private WxCUserBasicInfoService userService; | |||
| @ApiOperation(value = "根据卡密领卡", notes = "{\"password\":\"String\",\"formId\":\"String\"}") | |||
| @PostMapping("getCouponOrderByPassword") | |||
| @@ -59,6 +62,20 @@ public class WxCouponPasswordController extends BaseController { | |||
| } | |||
| WxCUser cuUser = getUser(); | |||
| if (null == cuUser ) { | |||
| return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(), "用户信息失效,请重新登陆"); | |||
| } | |||
| if(!cuUser.isBasicInfo()) { | |||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); | |||
| } | |||
| WxCUserBasicInfo user = userService.getById(cuUser.getUserId()); | |||
| if(user == null) { | |||
| logger.error("会员用户未找到: " + cuUser.getUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + cuUser.getUserId()); | |||
| } | |||
| WxCoupon coupon = couponService.getById(couponPassword.getCouponId()); | |||
| if (coupon == null) { | |||
| return new ResultData(ErrorCode.COUPON_IS_EMPTY); | |||
| @@ -75,7 +92,7 @@ public class WxCouponPasswordController extends BaseController { | |||
| // 3. 领取free coupon | |||
| try { | |||
| WxOrder order = orderService.saveFreeOrderForCoupon(cuUser, coupon, null, formId, couponPassword.getId()); | |||
| WxOrder order = orderService.saveFreeOrderForCoupon(user, coupon, null, formId, couponPassword.getId()); | |||
| } catch (MallinkException e) { | |||
| setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); | |||
| logger.error(e.getMessage()); | |||
| @@ -142,7 +142,7 @@ public class WxOrderController extends BaseController { | |||
| boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; | |||
| try { | |||
| WxOrder order = wxOrderService.saveOrderForCoupon(user, coupon, orderSaveDto, isPress); | |||
| WxOrder order = wxOrderService.saveOrderForCoupon(wxCUserBasicInfo, coupon, orderSaveDto, isPress); | |||
| return new ResultData(order); | |||
| } catch (MallinkException e) { | |||
| logger.error(e.getMessage()); | |||
| @@ -167,7 +167,7 @@ public class WxOrderController extends BaseController { | |||
| if (cUserBasicInfo != null && cUserBasicInfo.getActRecord() > 0) | |||
| return new ResultData(ErrorCode.COUPON_ONLY_FOR_NEW_MEMBER); | |||
| if (wxOrderService.countCouponConditionType1(user) > 0) | |||
| if (wxOrderService.countCouponConditionType1(cUserBasicInfo) > 0) | |||
| return new ResultData(ErrorCode.COUPON_ALREADY_IN_NEW_MEMBER); | |||
| }else if (jo.getIntValue("type") == EnumCouponConditionType.SCORE_SCOPE.getCode()){ | |||
| int max = jo.getIntValue("max"); | |||
| @@ -394,7 +394,16 @@ public class WxOrderController extends BaseController { | |||
| WxOrder order = null; | |||
| try { | |||
| order = wxOrderService.getUnPaidOrder(getUser(), wxCoupon); | |||
| WxCUser cuser = getUser(); | |||
| if(!cuser.isBasicInfo()) { | |||
| throw new MallinkException(ErrorCode.USER_IS_NOT_MEMBER); | |||
| } | |||
| WxCUserBasicInfo user = wxCUserBasicInfoService.getById(cuser.getUserId()); | |||
| if(user == null) { | |||
| logger.error("会员用户未找到: " + cuser.getUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + cuser.getUserId()); | |||
| } | |||
| order = wxOrderService.getUnPaidOrder(user, wxCoupon); | |||
| if (order != null) { | |||
| return new ResultData(Result.SUCCESS, "查询成功", order); | |||
| } else { | |||
| @@ -155,4 +155,15 @@ public class WxCUser extends TenantEntity { | |||
| } | |||
| return this.token; | |||
| } | |||
| /** | |||
| * 是否是会员 | |||
| * @return | |||
| */ | |||
| public boolean isBasicInfo() { | |||
| if(null == this.getUserId()) { | |||
| return false; | |||
| } | |||
| return true; | |||
| } | |||
| } | |||
| @@ -60,7 +60,7 @@ public interface WxOrderService { | |||
| * @param payment | |||
| * @return 订单id | |||
| */ | |||
| WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUser cUser, Integer payment); | |||
| WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer payment); | |||
| /** | |||
| * 商户码-储值卡支付 | |||
| @@ -185,7 +185,7 @@ public interface WxOrderService { | |||
| * @param coupon | |||
| * @return | |||
| */ | |||
| WxOrder saveOrderForCoupon(WxCUser user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress); | |||
| WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress); | |||
| void sendOrderSuccessActionMsg(WxOrder updateOrder); | |||
| /** | |||
| @@ -194,9 +194,9 @@ public interface WxOrderService { | |||
| * @param coupon | |||
| * @return | |||
| */ | |||
| WxOrder getUnPaidOrder(WxCUser cUser, WxCoupon coupon); | |||
| WxOrder getUnPaidOrder(WxCUserBasicInfo cUser, WxCoupon coupon); | |||
| int countCouponConditionType1(WxCUser user); | |||
| int countCouponConditionType1(WxCUserBasicInfo user); | |||
| /** | |||
| * 订单处理 | |||
| * 1. 检查coupon是否免费 | |||
| @@ -204,10 +204,10 @@ public interface WxOrderService { | |||
| boolean checkCouponIsFree(WxCoupon coupon); | |||
| // 2. 创建免费订单, 领取 couponOrder | |||
| WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); | |||
| WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); | |||
| // 3. 创建有价订单 | |||
| WxOrder saveNoFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); | |||
| WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); | |||
| /** | |||
| * 下订单成功后处理 | |||
| @@ -215,7 +215,7 @@ public interface WxOrderService { | |||
| * @param coupon | |||
| * @param user | |||
| */ | |||
| void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUser user); | |||
| void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user); | |||
| Map<String, Long> summary(WxOrderQueryVo wxOrderQueryVo); | |||
| @@ -225,7 +225,7 @@ public interface WxOrderService { | |||
| /** | |||
| * H5支付后, 券再注入 | |||
| */ | |||
| Long saveOuterOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); | |||
| Long saveOuterOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); | |||
| int countGroupOrder(Long groupId,boolean ignoreUnPay); | |||
| @@ -348,7 +348,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| } | |||
| private List<WxTags> assignTypeId14(WxCUserBasicInfo user, WxCUser param) | |||
| private List<WxTags> assignTypeId14(WxCUserBasicInfo user) | |||
| { | |||
| List<WxTags> resList = null; | |||
| Calendar endC = Calendar.getInstance(); | |||
| @@ -357,13 +357,13 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| startC.setTime(new Date()); | |||
| startC.add(Calendar.DAY_OF_YEAR, -30); | |||
| WxCouponOrder wxCouponOrder = new WxCouponOrder(); | |||
| wxCouponOrder.setCUserId(param.getId()); | |||
| wxCouponOrder.setCUserId(user.getId()); | |||
| wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); | |||
| wxCouponOrder.setStartTime(startC.getTime()); | |||
| wxCouponOrder.setEndTime(endC.getTime()); | |||
| WxCardSpend wxCardSpend = new WxCardSpend(); | |||
| wxCardSpend.setOwnerId(param.getId()); | |||
| wxCardSpend.setOwnerId(user.getId()); | |||
| wxCardSpend.setStartdate(startC.getTime()); | |||
| wxCardSpend.setEnddate(endC.getTime()); | |||
| @@ -413,7 +413,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId17(WxCUserBasicInfo user, WxCUser param) | |||
| private List<WxTags> assignTypeId17(WxCUserBasicInfo user) | |||
| { | |||
| List<WxTags> resList = null; | |||
| Calendar endC = Calendar.getInstance(); | |||
| @@ -422,14 +422,14 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| startC.setTime(new Date()); | |||
| startC.add(Calendar.DAY_OF_YEAR, -30); | |||
| WxCouponOrder wxCouponOrder = new WxCouponOrder(); | |||
| wxCouponOrder.setCUserId(param.getId()); | |||
| wxCouponOrder.setCUserId(user.getId()); | |||
| wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); | |||
| wxCouponOrder.setStartTime(startC.getTime()); | |||
| wxCouponOrder.setEndTime(endC.getTime()); | |||
| wxCouponOrder.setBusinessId(EnumBusiness.BUSINESS_ID1.getCode()); | |||
| WxCardSpend wxCardSpend = new WxCardSpend(); | |||
| wxCardSpend.setOwnerId(param.getId()); | |||
| wxCardSpend.setOwnerId(user.getId()); | |||
| wxCardSpend.setStartdate(startC.getTime()); | |||
| wxCardSpend.setEnddate(endC.getTime()); | |||
| wxCardSpend.setBusinessId(EnumBusiness.BUSINESS_ID1.getCode()); | |||
| @@ -480,7 +480,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId18(WxCUserBasicInfo user, WxCUser param) { | |||
| private List<WxTags> assignTypeId18(WxCUserBasicInfo user) { | |||
| List<WxTags> resList = null; | |||
| final int WORK_DAY = 0; | |||
| @@ -500,13 +500,13 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| startC.add(Calendar.DAY_OF_YEAR, -30); | |||
| WxCouponOrder wxCouponOrder = new WxCouponOrder(); | |||
| wxCouponOrder.setCUserId(param.getId()); | |||
| wxCouponOrder.setCUserId(user.getId()); | |||
| wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); | |||
| wxCouponOrder.setStartTime(startC.getTime()); | |||
| wxCouponOrder.setEndTime(endC.getTime()); | |||
| WxCardSpend wxCardSpend = new WxCardSpend(); | |||
| wxCardSpend.setOwnerId(param.getId()); | |||
| wxCardSpend.setOwnerId(user.getId()); | |||
| wxCardSpend.setStartdate(startC.getTime()); | |||
| wxCardSpend.setEnddate(endC.getTime()); | |||
| @@ -549,14 +549,14 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId21(WxCUserBasicInfo user, WxCUser param) { | |||
| private List<WxTags> assignTypeId21(WxCUserBasicInfo user) { | |||
| List<WxTags> resList = null; | |||
| Calendar startC = Calendar.getInstance(); | |||
| startC.setTime(new Date()); | |||
| startC.add(Calendar.DAY_OF_YEAR, -30); | |||
| WxCouponOrder wxCouponOrder = new WxCouponOrder(); | |||
| wxCouponOrder.setCUserId(param.getId()); | |||
| wxCouponOrder.setCUserId(user.getId()); | |||
| wxCouponOrder.setStartTime(startC.getTime()); | |||
| wxCouponOrder.setEndTime(new Date()); | |||
| @@ -573,11 +573,11 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId22(WxCUserBasicInfo user, WxCUser param) { | |||
| private List<WxTags> assignTypeId22(WxCUserBasicInfo user) { | |||
| List<WxTags> resList = null; | |||
| int days = (int) ((new Date().getTime() - param.getCreateDate().getTime()) / (1000*3600*24)); | |||
| int days = (int) ((new Date().getTime() - user.getCreateDate().getTime()) / (1000*3600*24)); | |||
| float loginRate = (float)param.getLoginCount()/days; | |||
| float loginRate = (float)user.getLoginCount()/days; | |||
| if (loginRate > 1F/4) | |||
| resList = assign(user, EnumTag.ID_112); | |||
| else if (loginRate > 1F/7) | |||
| @@ -658,17 +658,16 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| } | |||
| break; | |||
| case ASSIGN_TAGS_TRIGGER_BUY:{ | |||
| WxCUser param = (WxCUser) obj; | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getUserId()); | |||
| WxCUserBasicInfo user = (WxCUserBasicInfo) obj; | |||
| if (user != null) { | |||
| //消费类别 | |||
| resList = assignTypeId14(user, param); | |||
| resList = assignTypeId14(user); | |||
| //饮食偏好 | |||
| resList = assignTypeId17(user, param); | |||
| resList = assignTypeId17(user); | |||
| //消费时段 | |||
| resList = assignTypeId18(user, param); | |||
| resList = assignTypeId18(user); | |||
| //消费频度 | |||
| resList = assignTypeId22(user, param); | |||
| resList = assignTypeId22(user); | |||
| } | |||
| } | |||
| break; | |||
| @@ -694,13 +693,12 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| resList = assignTypeId7(user, param.getPhone()); | |||
| } | |||
| //活跃 | |||
| resList = assignTypeId21(user, param); | |||
| resList = assignTypeId21(user); | |||
| } | |||
| } | |||
| break; | |||
| case ASSIGN_TAGS_TRIGGER_SCAN: { | |||
| WxCUserBasicInfo user = (WxCUserBasicInfo) obj; | |||
| WxCUser param = wxCUserMapper.selectById(user.getId()); | |||
| if (user != null) { | |||
| if (user.getSex() != null) { | |||
| @@ -724,25 +722,23 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| resList = assignTypeId6(user, user.getEducation()); | |||
| } | |||
| if (param != null) { | |||
| //消费类别 | |||
| resList = assignTypeId14(user, param); | |||
| //饮食偏好 | |||
| resList = assignTypeId17(user, param); | |||
| //消费时段 | |||
| resList = assignTypeId18(user, param); | |||
| //消费频度 | |||
| resList = assignTypeId22(user, param); | |||
| //活跃 | |||
| resList = assignTypeId21(user, param); | |||
| //车 | |||
| WxCUserCar wxCUserCar = new WxCUserCar(); | |||
| wxCUserCar.setCUserId(param.getId()); | |||
| if (wxCUserCarMapper.countList(wxCUserCar) > 0) { | |||
| resList = assignTypeId11(user); | |||
| } | |||
| //消费类别 | |||
| resList = assignTypeId14(user); | |||
| //饮食偏好 | |||
| resList = assignTypeId17(user); | |||
| //消费时段 | |||
| resList = assignTypeId18(user); | |||
| //消费频度 | |||
| resList = assignTypeId22(user); | |||
| //活跃 | |||
| resList = assignTypeId21(user); | |||
| //车 | |||
| WxCUserCar wxCUserCar = new WxCUserCar(); | |||
| wxCUserCar.setCUserId(user.getId()); | |||
| if (wxCUserCarMapper.countList(wxCUserCar) > 0) { | |||
| resList = assignTypeId11(user); | |||
| } | |||
| } | |||
| } | |||
| @@ -38,7 +38,7 @@ import com.iformall.common.ResultData; | |||
| import com.iformall.domain.dto.OrderSaveDto; | |||
| import com.iformall.domain.dto.WxSharingOrderDto; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxCardInfo; | |||
| import com.iformall.domain.po.WxCoupon; | |||
| import com.iformall.domain.po.WxCouponChannel; | |||
| @@ -363,7 +363,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param counpon | |||
| * @return | |||
| */ | |||
| private int getUserOrderGroupCount(WxCUser user, WxCoupon counpon) { | |||
| private int getUserOrderGroupCount(WxCUserBasicInfo user, WxCoupon counpon) { | |||
| // + Order 待支付 | |||
| try { | |||
| WxOrder orderQ = new WxOrder(); | |||
| @@ -388,14 +388,14 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param counpon | |||
| * @return | |||
| */ | |||
| private int getUserOrderCount(WxCUser user, WxCoupon counpon) { | |||
| private int getUserOrderCount(WxCUserBasicInfo user, WxCoupon counpon) { | |||
| // + Order 待支付 | |||
| try { | |||
| WxOrder orderQ = new WxOrder(); | |||
| orderQ.updateTenantInfo(counpon); | |||
| orderQ.setProductId(counpon.getId()); | |||
| orderQ.setType(EnumOrderType.COUPON.getCode()); | |||
| orderQ.setCUserId(user.getUserId()); | |||
| orderQ.setCUserId(user.getId()); | |||
| List<Integer> statusS = new ArrayList<>(); | |||
| statusS.add(EnumOrderStatus.ORDER_STATUS_PRESSING.getCode()); | |||
| statusS.add(EnumOrderStatus.ORDER_STATUS_PRESS_COMPLETE.getCode()); | |||
| @@ -417,7 +417,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param counpon | |||
| * @return | |||
| */ | |||
| public WxOrder getUnPaidOrder(WxCUser user, WxCoupon counpon) { | |||
| public WxOrder getUnPaidOrder(WxCUserBasicInfo user, WxCoupon counpon) { | |||
| // + Order 待支付 | |||
| try { | |||
| WxOrder orderQ = new WxOrder(); | |||
| @@ -448,13 +448,13 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param user | |||
| * @return | |||
| */ | |||
| public int countCouponConditionType1(WxCUser user) { | |||
| public int countCouponConditionType1(WxCUserBasicInfo user) { | |||
| // + Order 待支付 | |||
| try { | |||
| WxOrder orderQ = new WxOrder(); | |||
| orderQ.setTenantId(user.getTenantId()); | |||
| orderQ.setType(EnumOrderType.COUPON.getCode()); | |||
| orderQ.setCUserId(user.getUserId()); | |||
| orderQ.setCUserId(user.getId()); | |||
| List<Integer> statusS = new ArrayList<>(); | |||
| statusS.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); | |||
| statusS.add(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); | |||
| @@ -480,7 +480,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param counpon | |||
| * @return | |||
| */ | |||
| private int getUserCouponOrderCount(WxCUser user, WxCoupon counpon) { | |||
| private int getUserCouponOrderCount(WxCUserBasicInfo user, WxCoupon counpon) { | |||
| // + couponOrder ---待使用 | |||
| try { | |||
| WxCouponOrder couponOrderQ = new WxCouponOrder(); | |||
| @@ -506,7 +506,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param couponIdStr | |||
| * @param wxCouponSendVo | |||
| */ | |||
| private void stockMerchantReduce(WxCUser user, WxCoupon coupon, String couponIdStr, WxCouponSendVo wxCouponSendVo) { | |||
| private void stockMerchantReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr, WxCouponSendVo wxCouponSendVo) { | |||
| long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; | |||
| String timeStr = String.valueOf(time); | |||
| // 库存加锁 | |||
| @@ -579,7 +579,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param coupon | |||
| * @param couponIdStr | |||
| */ | |||
| private void stockReduce(WxCUser user, WxCoupon coupon, String couponIdStr) { | |||
| private void stockReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr) { | |||
| //如果缓存中不存在这个key,则从coupon中取 | |||
| if(!redisLock.hasCouponStockCache(coupon.getId())) { | |||
| //此处需要加锁,防止并发设置 | |||
| @@ -880,7 +880,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| @Override | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUser cUser, Integer payment) { | |||
| public WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer payment) { | |||
| // 检查用户 | |||
| if (user == null) { | |||
| logger.error("用户不存在"); | |||
| @@ -979,7 +979,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param order | |||
| * @param coupon | |||
| */ | |||
| private WxCouponOrder createCouponOrder(WxOrder order, WxCUser user, WxCoupon coupon, Long couponPasswordId) { | |||
| private WxCouponOrder createCouponOrder(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId) { | |||
| Date curr = new Date(); | |||
| Date valid_date = null; | |||
| int limit_days = Constant.WX_LIMIT_DAYS; | |||
| @@ -1049,8 +1049,8 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| couponOrder.updateTenantInfo(order); | |||
| couponOrder.setCouponId(order.getProductId()); | |||
| couponOrder.setCouponType(coupon.getType()); | |||
| couponOrder.setCUserId(user.getUserId()); | |||
| couponOrder.setOwnerId(user.getUserId()); | |||
| couponOrder.setCUserId(user.getId()); | |||
| couponOrder.setOwnerId(user.getId()); | |||
| couponOrder.setAutoRefund(coupon.getAutoRefund()); | |||
| couponOrder.setOrderId(order.getOrderNumber()); | |||
| couponOrder.setExpiredTime(valid_date); | |||
| @@ -1141,7 +1141,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param order | |||
| * @param coupon | |||
| */ | |||
| private WxCouponOrder createCouponOrderForOuter(WxOrder order, WxCUser user, WxCoupon coupon, Long couponPasswordId) { | |||
| private WxCouponOrder createCouponOrderForOuter(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId) { | |||
| Date curr = new Date(); | |||
| Date valid_date = null; | |||
| int limit_days = Constant.WX_LIMIT_DAYS; | |||
| @@ -1222,9 +1222,9 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| @Transactional(propagation = Propagation.NESTED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo) { | |||
| // check 用户状态 | |||
| WxCUser user = null; | |||
| WxCUserBasicInfo user = null; | |||
| try { | |||
| user = wxCUserMapper.selectById(userId); | |||
| user = wxCUserBasicInfoMapper.selectById(userId); | |||
| } catch (Exception e) { | |||
| logger.error("userId : " + userId + ", e: " + e.getMessage()); | |||
| } | |||
| @@ -1321,7 +1321,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); | |||
| } | |||
| // 检查用户 | |||
| WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(updateOrder.getCUserId()); | |||
| if (user == null) { | |||
| logger.error("用户不存在, userId: " + updateOrder.getCUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| @@ -1358,12 +1358,12 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| return ret; | |||
| } | |||
| private void sendInsideOrderSuccessMsg(WxOrder updateOrder, WxCoupon coupon, WxCUser user) { | |||
| private void sendInsideOrderSuccessMsg(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user) { | |||
| FmInsideOrderSuccessMsg orderSuccess = new FmInsideOrderSuccessMsg(); | |||
| orderSuccess.setMsgType(EnumMsgRecordType.INSIDE_ORDER_SUCCESS.getCode()); | |||
| orderSuccess.updateTenantInfo(updateOrder); | |||
| orderSuccess.setOrderId(updateOrder.getId()); | |||
| orderSuccess.setCUserId(user.getUserId()); | |||
| orderSuccess.setCUserId(user.getId()); | |||
| orderSuccess.setCouponId(coupon.getId()); | |||
| logger.info(">>>>>>>>>>>send sendInsideOrderSuccessMsg :"+orderSuccess); | |||
| mqBaseProducer.sendMessage(orderSuccess, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| @@ -1382,11 +1382,16 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF); | |||
| } | |||
| // 检查用户 | |||
| WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); | |||
| if (user == null) { | |||
| logger.error("用户不存在, userId: " + updateOrder.getCUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| WxCUserBasicInfo basicUser = wxCUserBasicInfoMapper.selectById(updateOrder.getCUserId()); | |||
| if (basicUser == null) { | |||
| logger.error("会员不存在, userId: " + updateOrder.getCUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| // WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); | |||
| // if (user == null) { | |||
| // logger.error("用户不存在, userId: " + updateOrder.getCUserId()); | |||
| // throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| // } | |||
| // 记录活动 | |||
| JSONObject jo = null; | |||
| @@ -1398,11 +1403,11 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| } | |||
| if (jo != null) { | |||
| if (jo.getIntValue("type") == EnumCouponConditionType.NEW_MEMBER.getCode()) { | |||
| wxCUserBasicInfoMapper.incActRecordById(user.getUserId()); | |||
| wxCUserBasicInfoMapper.incActRecordById(basicUser.getId()); | |||
| } | |||
| } | |||
| sendInsideOrderSuccessMsg(updateOrder, coupon, user); | |||
| sendInsideOrderSuccessMsg(updateOrder, coupon, basicUser); | |||
| } | |||
| /** | |||
| @@ -1412,7 +1417,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param coupon | |||
| * @param user | |||
| */ | |||
| public void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUser user) { | |||
| public void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user) { | |||
| /// TODO 晚上会定时打一下tag | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_BUY, user); | |||
| @@ -1476,7 +1481,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| public int microPayOrderSuccess(WxOrder updateOrder) { | |||
| Date currentDate = new Date(); | |||
| // C端用户 | |||
| WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(updateOrder.getCUserId()); | |||
| if (user == null) { | |||
| logger.error("用户不存在, userId: " + updateOrder.getCUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| @@ -1922,11 +1927,11 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| } | |||
| @Autowired | |||
| @Qualifier("cuserTokenRedisTemplate") | |||
| RedisTemplate<String, WxCUser> cUserTokenRedisTemplate; | |||
| @Qualifier("cUserBasicInfoRedisTemplate") | |||
| RedisTemplate<String, WxCUserBasicInfo> cUserBasicInfoRedisTemplate; | |||
| @Override | |||
| public WxOrder saveOrderForCoupon(WxCUser user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress) { | |||
| public WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress) { | |||
| WxOrder order = null; | |||
| // 防止同一用户重复抽奖(一分钟内) | |||
| // 1. 订单保存时 加入redis缓存,key --> action:userId:couponId , 时间1000ms | |||
| @@ -1935,12 +1940,12 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| if (checkCouponIsFree(coupon)) { | |||
| // 免费券 | |||
| String key = StringUtils.join("action", ":", user.getId(), coupon.getId()); | |||
| boolean hasKey = cUserTokenRedisTemplate.hasKey(key); | |||
| boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); | |||
| if (hasKey) { | |||
| logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); | |||
| throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); | |||
| } | |||
| cUserTokenRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); | |||
| cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); | |||
| order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); | |||
| if (order != null) { | |||
| @@ -1976,7 +1981,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| @Override | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { | |||
| public WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { | |||
| // 1. check user info and coupon info | |||
| userCouponMerchantCheck(user, coupon); | |||
| if (coupon.checkIsCreditCoupon()) { | |||
| @@ -2026,7 +2031,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| @Override | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public Long saveOuterOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { | |||
| public Long saveOuterOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { | |||
| // 1. check user info and coupon info | |||
| userCouponMerchantCheck(user, coupon); | |||
| if (coupon.checkIsCreditCoupon()) { | |||
| @@ -2081,7 +2086,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param user | |||
| * @param coupon | |||
| */ | |||
| private void saveFreeOrder(WxOrder record, WxCUser user, WxCoupon coupon) { | |||
| private void saveFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon) { | |||
| Date curr = new Date(); | |||
| // body | |||
| String bodyStr = ""; | |||
| @@ -2098,7 +2103,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| record.updateTenantInfo(coupon); | |||
| record.setOrderNumber(orderNumber); | |||
| record.setProductId(coupon.getId()); | |||
| record.setCUserId(user.getUserId()); | |||
| record.setCUserId(user.getId()); | |||
| record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); | |||
| record.setDetail(bodyStr); | |||
| record.setCreateDate(curr); | |||
| @@ -2107,7 +2112,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| wxOrderMapper.insert(record); | |||
| } | |||
| private void userCouponMerchantCheck(WxCUser user, WxCoupon coupon) throws MallinkException { | |||
| private void userCouponMerchantCheck(WxCUserBasicInfo user, WxCoupon coupon) throws MallinkException { | |||
| // 检查用户 | |||
| if (user == null) { | |||
| logger.error("用户不存在"); | |||
| @@ -2135,7 +2140,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| } | |||
| } | |||
| private void creditPay(WxCUser user, WxCoupon coupon) { | |||
| private void creditPay(WxCUserBasicInfo user, WxCoupon coupon) { | |||
| //-------此处为【积分支付】记录增加积分操作------- | |||
| WxCreditHistory creditHistory = new WxCreditHistory(); | |||
| //记录操作人类型 操作人id | |||
| @@ -2144,10 +2149,10 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| creditHistory.setOperatorId(user.getOperatorId()); | |||
| } else { | |||
| creditHistory.setOperatorType(EnumUserType.CUSER.getCode()); | |||
| creditHistory.setOperatorId(user.getUserId()); | |||
| creditHistory.setOperatorId(user.getId()); | |||
| } | |||
| creditHistory.setCreditNum(coupon.getCreditPrice()); | |||
| creditHistory.setCUserId(user.getUserId()); | |||
| creditHistory.setCUserId(user.getId()); | |||
| creditHistory.updateTenantInfo(coupon); | |||
| creditHistory.setCreditType(EnumScoreType.CHANGE_CREDIT.getCode()); | |||
| creditHistory.setCouponId(coupon.getId()); | |||
| @@ -2158,7 +2163,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| @Override | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public WxOrder saveNoFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { | |||
| public WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { | |||
| // 1. check user info and coupon info | |||
| userCouponMerchantCheck(user, coupon); | |||
| if (coupon.checkIsCreditCoupon()) { | |||
| @@ -2238,7 +2243,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| * @param coupon | |||
| * @param orderNumber | |||
| */ | |||
| private void firstPress(WxOrder record, WxCUser user, WxCoupon coupon, Long orderNumber) { | |||
| private void firstPress(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, Long orderNumber) { | |||
| // 保存砍价信息 | |||
| int total = coupon.getPrice() - coupon.getSalePrice(); | |||
| int left_total = total; | |||
| @@ -2263,7 +2268,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| wxOrderMapper.updateById(orderUpdatePress); | |||
| } | |||
| private Long saveNoFreeOrder(WxOrder record, WxCUser user, WxCoupon coupon, boolean isPress) { | |||
| private Long saveNoFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, boolean isPress) { | |||
| Long orderNumber; | |||
| Date curr = new Date(); | |||
| @@ -2302,7 +2307,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| return orderNumber; | |||
| } | |||
| private void checkOrderGroup(WxCUser user, Long orderGroupId,WxCoupon coupon) { | |||
| private void checkOrderGroup(WxCUserBasicInfo user, Long orderGroupId,WxCoupon coupon) { | |||
| WxOrderGroup group = wxOrderGroupMapper.selectById(orderGroupId); | |||
| if (group.getStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode())) { | |||
| logger.error("下订单拼团人数已满>>>" + orderGroupId); | |||
| @@ -1,14 +1,14 @@ | |||
| package com.iformall.service.msg.impl; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxCoupon; | |||
| import com.iformall.domain.po.WxCouponChannel; | |||
| import com.iformall.domain.po.WxOrder; | |||
| import com.iformall.domain.po.msg.BaseMsg; | |||
| import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.WxCUserService; | |||
| import com.iformall.service.WxCUserBasicInfoService; | |||
| import com.iformall.service.WxCouponChannelService; | |||
| import com.iformall.service.WxCouponService; | |||
| import com.iformall.service.WxOrderService; | |||
| @@ -31,7 +31,7 @@ public class FmInsideOrderSuccessMsgServiceImpl implements MsgSendService { | |||
| private WxOrderService orderService; | |||
| @Autowired | |||
| private WxCUserService userService; | |||
| private WxCUserBasicInfoService userService; | |||
| @Autowired | |||
| private WxCouponService couponService; | |||
| @@ -63,7 +63,7 @@ public class FmInsideOrderSuccessMsgServiceImpl implements MsgSendService { | |||
| throw new MallinkException(ErrorCode.ORDER_COUPON_NOT_MATCH.getCode(), "订单用户不一致" + msg.getOrderId()); | |||
| } | |||
| WxCUser user = userService.getById(msg.getCUserId()); | |||
| WxCUserBasicInfo user = userService.getById(msg.getCUserId()); | |||
| if(user == null) { | |||
| logger.error("用户未找到: " + msg.getCUserId()); | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户未找到" + msg.getCUserId()); | |||