Przeglądaj źródła

下单低于1000权限控制,取消订单返还豆子

zhijiezhao 3 lat temu
rodzic
commit
aa0e8d32d7

+ 3 - 0
src/main/java/com/caimei365/order/mapper/BaseMapper.java

@@ -213,4 +213,7 @@ public interface BaseMapper {
      * @param userId        用户id
      */
     void updateClubStatus(@Param("clubStatus") int clubStatus, @Param("userId") Integer userId);
+
+    UserBeansHistoryPo findLowOrder(Integer orderId);
+
 }

+ 2 - 2
src/main/java/com/caimei365/order/model/po/UserBeansHistoryPo.java

@@ -27,8 +27,8 @@ public class UserBeansHistoryPo implements Serializable {
      */
     private Integer type;
     /**
-     * 采美豆类型:1注册机构,2升级会员机构,3普通机构完善资料,4会员机构完善资料,5下单,
-     * 6线上支付订单,7确认收货,8系统发放,9抵用退回,10抵用运费,11退款回收
+     *1注册机构,2升级会员机构,3普通机构完善资料,4会员机构完善资料,5下单,6线上支付订单,7确认收货,8系统发放,9抵用退回,10抵用运费,11退款回收,
+     * 12登录奖励,13查看商品资料抵扣,14购买超级会员,15系统扣除,16系统退回
      */
     private Integer beansType;
     /**

+ 39 - 18
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -345,8 +346,8 @@ public class OrderClubServiceImpl implements OrderClubService {
     /**
      * 机构取消订单
      *
-     * @param orderId   订单Id
-     * @param remark    备注(订单取消原因)
+     * @param orderId 订单Id
+     * @param remark  备注(订单取消原因)
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -375,7 +376,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             balanceRecord.setDelFlag(1);
             // 取消 余额收支记录
             orderClubMapper.cancelBalanceRecord(balanceRecord);
-            log.info(note +">>>>>>>>>>>>取消余额收支记录(update[cm_user_balance_record])orderId:" + orderId);
+            log.info(note + ">>>>>>>>>>>>取消余额收支记录(update[cm_user_balance_record])orderId:" + orderId);
         }
         order.setStatus(6);
         if (StringUtils.isBlank(remark)) {
@@ -417,6 +418,26 @@ public class OrderClubServiceImpl implements OrderClubService {
             int beans = userBeans + beansHistory.getNum();
             productService.updateUserBeans(beansHistory, beans, note);
         }
+        if (order.getPayTotalFee() < 1000) {
+            //查本单是否扣豆子,有就返回
+            UserBeansHistoryPo bean = baseMapper.findLowOrder(orderId);
+            if (bean != null) {
+                //有扣豆子记录
+                UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
+                beansHistory.setUserId(order.getUserId());
+                beansHistory.setOrderId(orderId);
+                beansHistory.setBeansType(16);
+                beansHistory.setType(1);
+                beansHistory.setNum(500);
+                beansHistory.setPushStatus(0);
+                beansHistory.setAddTime(date);
+                beansHistory.setDelFlag(0);
+                int beans = baseMapper.getUserBeans(order.getUserId()) + 500;
+                productService.updateUserBeans(beansHistory, beans, note);
+            }
+        }
+
+
         //取消订单短信推送(取消推送)
         /*String bindMobile = baseMapper.getBindMobileByUserId(order.getUserId());
         if (StringUtils.isNotBlank(bindMobile)) {
@@ -635,7 +656,7 @@ public class OrderClubServiceImpl implements OrderClubService {
         calendar.add(Calendar.DATE, 1);
         // 获取数据库已有分享码
         OrderShareCodeVo orderCodeVo = orderClubMapper.getOrderCodeById(orderId);
-        if (orderCodeVo != null && orderCodeVo.getExpiredTime().compareTo(new Date()) >= 0 ) {
+        if (orderCodeVo != null && orderCodeVo.getExpiredTime().compareTo(new Date()) >= 0) {
             // 旧分享码还未过期,直接返回
             return ResponseJson.success(orderCodeVo.getShareCode());
         } else if (orderCodeVo != null) {
@@ -679,7 +700,7 @@ public class OrderClubServiceImpl implements OrderClubService {
         }
         // 微信小程序授权登录(调用user服务,发送服务间调用POST请求)
         String loginData = remoteCallService.appletsAuthorization(code, encryptedData, iv, headers);
-        if (StringUtils.isEmpty(loginData)){
+        if (StringUtils.isEmpty(loginData)) {
             return ResponseJson.error("微信授权登录异常!", null);
         }
         // 解析登录后得到 userIdentity,  openId等
@@ -695,14 +716,14 @@ public class OrderClubServiceImpl implements OrderClubService {
         // 协销身份
         boolean spFlag = (null != userIdentity && 1 == userIdentity);
         // 机构身份
-        boolean clubFlag = (null != userIdentity && (2 == userIdentity || 4 ==userIdentity));
+        boolean clubFlag = (null != userIdentity && (2 == userIdentity || 4 == userIdentity));
         if (spFlag) {
             if (null != serviceProviderId && serviceProviderId.equals(loginSpId)) {
                 // 该机构的协销
                 return ResponseJson.success(2, "该机构的协销查看分享订单!", loginData);
             } else {
                 // 非该机构协销(游客)
-                return ResponseJson.success(3,"非该机构协销查看分享订单!", null);
+                return ResponseJson.success(3, "非该机构协销查看分享订单!", null);
             }
         } else if (clubFlag && userId.equals(loginUserId)) {
             // 该机构的运营人员, 旧接口返回  0,true
@@ -712,23 +733,23 @@ public class OrderClubServiceImpl implements OrderClubService {
         int codeCount = orderClubMapper.countShareCodeRecord(orderId, openId);
         if (codeCount > 0) {
             // 游客权限
-            return ResponseJson.success(3,"游客权限查看分享订单!", null);
+            return ResponseJson.success(3, "游客权限查看分享订单!", null);
         }
         /*
          * 默认数据按游客权限处理
          */
-        return ResponseJson.success(0,"默认游客分享订单商品数据!", null);
+        return ResponseJson.success(0, "默认游客分享订单商品数据!", null);
     }
 
     /**
      * 分享订单,校验分享码
      *
-     * @param orderId           订单Id
-     * @param shareCode         分享码
-     * @param code              微信code
-     * @param encryptedData     微信加密数据
-     * @param iv                微信加密算法的初始向量
-     * @param headers           HttpHeaders
+     * @param orderId       订单Id
+     * @param shareCode     分享码
+     * @param code          微信code
+     * @param encryptedData 微信加密数据
+     * @param iv            微信加密算法的初始向量
+     * @param headers       HttpHeaders
      */
     @Override
     public ResponseJson<String> checkOrderShareCode(Integer orderId, String shareCode, String code, String encryptedData, String iv, HttpHeaders headers) {
@@ -738,7 +759,7 @@ public class OrderClubServiceImpl implements OrderClubService {
         }
         // 微信小程序授权登录(调用user服务,发送服务间调用POST请求)
         String loginData = remoteCallService.appletsAuthorization(code, encryptedData, iv, headers);
-        if (StringUtils.isEmpty(loginData)){
+        if (StringUtils.isEmpty(loginData)) {
             return ResponseJson.error("微信授权登录异常!", null);
         }
         // 解析登录后得到 userIdentity,  openId等
@@ -753,7 +774,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             return ResponseJson.error("该订单没有生成分享码!", null);
         }
         // 校验分享码
-        if (orderCodeVo.getShareCode().equals(shareCode)){
+        if (orderCodeVo.getShareCode().equals(shareCode)) {
             if (orderCodeVo.getExpiredTime().compareTo(new Date()) > 0) {
                 // 分享码有效, 保存分享码使用记录
                 OrderShareCodeRecordVo codeRecord = new OrderShareCodeRecordVo();
@@ -764,7 +785,7 @@ public class OrderClubServiceImpl implements OrderClubService {
                 codeRecord.setShareCodeId(orderCodeVo.getId());
                 orderClubMapper.insertOrderShareCodeRecord(codeRecord);
                 // 返回
-                return ResponseJson.success(0,"游客权限查看分享订单!", null);
+                return ResponseJson.success(0, "游客权限查看分享订单!", null);
             } else {
                 // 分享码过期
                 return ResponseJson.error("分享码已失效!", null);

+ 15 - 2
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -1371,11 +1371,24 @@ public class SubmitServiceImpl implements SubmitService {
                     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     Date orderTime = format.parse("2021-10-27 00:00:01");
                     List<Integer> mainOrderIds = submitMapper.findLowOrder(orderTime);
-
+                    if (mainOrderIds != null && mainOrderIds.size() >= 2) {
+                        return ResponseJson.error("您已有2个采购金额过小的订单,本次不能再进行采购!");
+                    }
+                    UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
+                    beansHistory.setUserId(mainOrder.getUserId());
+                    beansHistory.setOrderId(mainOrder.getOrderId());
+                    beansHistory.setBeansType(15);
+                    beansHistory.setType(2);
+                    beansHistory.setNum(500);
+                    beansHistory.setPushStatus(0);
+                    beansHistory.setAddTime(date);
+                    beansHistory.setDelFlag(0);
+                    int beans = orderParamBo.getUserBeans() - 500;
+                    productService.updateUserBeans(beansHistory, beans, "【价格低于1000,倒扣500采美豆】");
                 }
             }
         } catch (ParseException e) {
-            e.printStackTrace();
+            log.info("自主下单价格低于1000,倒扣500采美豆", e);
         }
         /*
          * 保存优惠券使用情况

+ 8 - 0
src/main/resources/mapper/BaseMapper.xml

@@ -319,4 +319,12 @@
         ORDER BY confirmTime DESC
         LIMIT 1
     </select>
+    <select id="findLowOrder" resultType="com.caimei365.order.model.po.UserBeansHistoryPo">
+        select id, userId, type, beansType, orderId, num, addTime
+        from user_beans_history
+        where orderId = #{orderId}
+          and delFlag = 0
+          and type = 2
+          and num = 500
+    </select>
 </mapper>

+ 2 - 2
src/main/resources/mapper/SubmitMapper.xml

@@ -232,8 +232,8 @@
     <select id="findLowOrder" resultType="java.lang.Integer">
         select orderID
         from cm_order
-        where status = '4'
+        where status not in (6, 7)
           and payTotalFee <![CDATA[ < ]]> 1000
-        and orderTime <![CDATA[ > ]]> #{orderTime}
+          and orderTime <![CDATA[ > ]]> #{orderTime}
     </select>
 </mapper>