@@ -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.getUser Id());
orderQ.setCUserId(user.getId());
List<Integer> statusS = new ArrayList<>();
statusS.add(EnumOrderStatus.ORDER_STATUS_PRESSING.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_PRESS_COMPLETE.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.getUser Id());
couponOrder.setOwnerId(user.getUser Id());
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 = wxCUserBasicInfo Mapper.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 = wxCUserBasicInfo Mapper.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.getUser Id());
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.getUser Id());
wxCUserBasicInfoMapper.incActRecordById(basicUser.get Id());
}
}
sendInsideOrderSuccessMsg(updateOrder, coupon, u ser);
sendInsideOrderSuccessMsg(updateOrder, coupon, basicU ser);
}
/**
@@ -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);
@@ -1922,11 +1927,11 @@ public class WxOrderServiceImpl implements WxOrderService {
}
@Autowired
@Qualifier("cuserToken RedisTemplate")
RedisTemplate<String, WxCUser> cUserToken RedisTemplate;
@Qualifier("cUserBasicInfo RedisTemplate")
RedisTemplate<String, WxCUserBasicInfo> cUserBasicInfo RedisTemplate;
@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 = cUserToken RedisTemplate.hasKey(key);
boolean hasKey = cUserBasicInfo RedisTemplate.hasKey(key);
if (hasKey) {
logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user));
throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION);
}
cUserToken RedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS);
cUserBasicInfo RedisTemplate.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.getUser Id());
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.getUser Id());
creditHistory.setOperatorId(user.getId());
}
creditHistory.setCreditNum(coupon.getCreditPrice());
creditHistory.setCUserId(user.getUser Id());
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);