Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/developer' into developer

huangzhiguo 2 rokov pred
rodič
commit
4e64ee9c7a

+ 7 - 0
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -1,5 +1,6 @@
 package com.caimei365.order.mapper;
 
+import com.caimei365.order.model.bo.OrderParamBo;
 import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
@@ -339,4 +340,10 @@ public interface OrderClubMapper {
     Integer getVipHistoryCount(Integer userId);
 
     Integer clubIdCule(Integer userId);
+
+    List<CouponRecordPo> findCouponRemain(Integer couponId);
+
+    void updateCodeCoupon(CouponRecordPo couponRecordPo);
+
+    OrderParamBo findUserName(Integer userId);
 }

+ 50 - 3
src/main/java/com/caimei365/order/mapper/ReceiptMapper.java

@@ -20,84 +20,105 @@ public interface ReceiptMapper {
      * 保存收款记录
      */
     void insertReceipt(ReceiptPo receiptPo);
+
     /**
      * 更新收款记录
      */
     void updateReceipt(ReceiptPo receiptPo);
+
     /**
      * 根据openid获取收款用户
      */
     ReceiptUserVo getReceiptUserByOpenid(String openId);
+
     /**
      * 根据收款用户Id获取姓名
      */
     String getReceiptUserNameById(Integer id);
+
     /**
      * 根据mobile获取收款用户
      */
     ReceiptUserVo getReceiptUserByMobile(String mobile);
+
     /**
      * 根据mobile更新openid
      */
     void updateOpenidByMobile(String openid, String unionId, String mobile);
+
     /**
      * 获取用户权限: 1录入收款,2收款列表操作,3关联订单款,4关联返佣款,5口头返佣,6关联供应商退款,7审核订单款,8收款详情分享,
      * 9非订单款查看(全部),10订单款查看(全部),11返佣款查看(全部),12供应商退款查看(全部),13订单款查看(协销自己机构),14返佣款查看(协销自己机构),15供应商退款查看(协销自己机构)
      */
     List<Integer> getPermissionsByUserId(Integer userId);
+
     /**
      * 获取收款类型列表
      */
     List<ReceiptTypeVo> getReceiptType();
+
     /**
      * 获取收款类型
      */
     ReceiptTypeVo getReceiptTypeById(Integer id);
+
     String getReceiptTypeStrById(Integer id);
+
     /**
      * 短信内容Md5加密串 获取收款记录
      */
     List<ReceiptVo> getReceiptBySmsMd5Code(String smsMd5Code);
+
     /**
      * 获取收款类型
      */
     Integer getReceivablesTypeId(String type);
+
     /**
      * 获取订单已支付金额(待审核状态的收款也算)
      */
     Double getPaidAmountByOrderId(Integer orderId);
+
     /**
      * 获取订单待审核金额
      */
     Double getUncheckAmount(Integer orderId);
+
     /**
      * 获取订单已退金额
      */
     Double getReturnedAmount(Integer orderId);
+
     /**
      * 获取主订单下面的所有的确认收货商品数量
      */
     Integer getReceiptNumByOrderId(Integer orderId);
+
     /**
      * 获取该主订单下面所有已完成状态退货退款商品数量
      */
     Integer getReturnAndCancelNum(Integer orderId);
+
     /**
      * 获取协销Id
      */
     Integer getServiceProviderId(String unionId);
+
     /**
      * 获取协销下的机构userIds
      */
     List<Integer> getClubUserIdBySpId(Integer spId);
+
     /**
      * 获取收款列表
      */
     List<ReceiptVo> getReceiptList(ReceiptParamsBo receiptParamsBo);
+
     /**
      * 获取收款详情
      */
     ReceiptVo getReceiptDetail(Integer id);
+
     /**
      * 获取收款关联订单
      */
@@ -106,101 +127,127 @@ public interface ReceiptMapper {
     List<OrderVo> getReceiptOrderlist(Integer receiptId);
 
     List<OrderVo> getReceiptOrderlists(Integer receiptId);
+
     /**
      * 获取收款商品订单列表
      */
     List<OrderVo> getOrderListByParams(ReceiptParamsBo receiptParamsBo);
+
     List<OrderVo> getOrderListByOrderIds(@Param("orderIdS") String[] orderIdS);
+
     /**
      * 存在退款中的记录
      */
     Integer countHaveReturning(Integer orderId);
+
     /**
      * 存在收款中的记录
      */
     Integer countHaveReceipting(Integer orderId);
+
     /**
      * 线上支付收款Id
      */
     Integer getOnlineReceiptId(Integer orderId);
+
     /**
      * 获取已退款金额
      */
     List<ReturnedPurchaseVo> getRefundFeeByOrderId(Integer orderId);
+
     /**
      * 已关联子订单
      */
     List<ShopOrderVo> getShopOrderListByReceiptId(Integer receiptId);
+
     /**
      * 搜索子订单进行关联
      */
     List<ShopOrderVo> getRefundShopOrders(Integer confirmedType, String shopName, String userName, Integer orderId);
+
     /**
      * 返佣款-子订单列表
      */
     List<ShopOrderVo> getRebateShopOrders(String shopName);
+
     /**
      * 获取子订单信息
      */
     ShopOrderVo getShopOrderById(Integer shopOrderId);
+
     /**
      * 返佣订单付款总金额
      */
     double countAllPayAssociateAmount(Integer orderId);
+
     /**
      * 需要支付金额
      */
     double countNeedPayAmount(Integer orderId);
+
     /**
      * 删除之前与这个收款所有的关系
      */
     void deleteReceiptRelation(Integer receiptId);
+
     /**
      * 子订单付款类型列表
      */
     List<Integer> getRebatePayTypeList(Integer shopOrderId);
+
     /**
      * 根据用户类型获取用户openid列表(微信公众号openid,非收款小程序)
      */
     List<String> getOpenidListByPermission(List<Integer> permissions);
+
     /**
      * 统计收款金额
      */
     double countAssociateAmountById(Integer receiptId);
+
     /**
      * 总退款金额
      */
     double getRefundShopAmount(Integer shopOrderId);
+
     /**
      * 保存供应商退款
      */
     void insertRefundShop(RefundShopPo refundShopPo);
+
     /**
      * 保存供应商退款记录
      */
     void insertRefundShopRecord(RefundShopRecordPo refundShopRecord);
+
     /**
      * 供应商Id
      */
     Integer getShopIdByShopOrderId(Integer shopOrderId);
+
     /**
      * 查询这个子订单的主订单下面的所有子订单ID
      */
     List<Integer> getSubShopOrderList(Integer shopOrderId);
+
     /**
      * 查询当前子订单列表中已经返佣了的子订单
      */
     List<Integer> getSubShopOrderRebate(@Param("shopOrderIdList") List<Integer> shopOrderIdList);
+
     /**
      * 修改(付款供应商)付款状态
+     *
      * @param shopOrderId 子订单Id
-     * @param payStatus 付款状态
+     * @param payStatus   付款状态
      */
     void updateShopOrderPayStatus(Integer shopOrderId, Integer payStatus);
+
     /**
      * 收款项和订单关系
      */
     List<OrderReceiptRelationPo> getOrderReceiptRelationList(Integer receiptId);
+
     /**
      * 查询待审核数量
      */
@@ -216,11 +263,11 @@ public interface ReceiptMapper {
      */
     void updateShopRebateAmount(Integer shopId, Double amount);
 
-    List<ShopOrderVo>ReceiptDetailVo(String keyWord);
+    List<ShopOrderVo> ReceiptDetailVo(String keyWord);
 
     List<ShopOrderVo> ReceiptDetail(String keyWord);
 
     List<ShopOrderVo> ReceiptDetails(String keyWord);
 
-
+    List<Integer> getTeamClubUserIdBySpId(Integer spId);
 }

+ 21 - 1
src/main/java/com/caimei365/order/model/po/CouponRecordPo.java

@@ -3,6 +3,7 @@ package com.caimei365.order.model.po;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Date;
 
 @Data
 public class CouponRecordPo implements Serializable {
@@ -12,5 +13,24 @@ public class CouponRecordPo implements Serializable {
     private Integer couponId;
     private Integer payStatus;
     private Integer userId;
-    private Integer orderId;//商品兑换优惠券订单id
+    /**
+     * cm_coupon_redemption_code 兑换码
+     */
+    private String redemptionCode;
+    /**
+     *  商品兑换优惠券订单id
+     */
+    private Integer orderId;
+    /**
+     *  cm_coupon_redemption_code 关联的cm_coupon_club的Id
+     */
+    private Integer clubCouponId;
+    /**
+     *  cm_coupon_redemption_code 兑换状态:1未兑换 2已兑换
+     */
+    private Integer status;
+    /**
+     *  cm_coupon_redemption_code 兑换时间
+     */
+    private Date redemptionTime;
 }

+ 56 - 18
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -5,11 +5,13 @@ import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.components.OrderCommonService;
 import com.caimei365.order.components.ProductService;
 import com.caimei365.order.components.WeChatService;
+import com.caimei365.order.feign.ToolsFeign;
 import com.caimei365.order.mapper.BaseMapper;
 import com.caimei365.order.mapper.OrderClubMapper;
 import com.caimei365.order.mapper.OrderCommonMapper;
 import com.caimei365.order.mapper.PayOrderMapper;
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.bo.OrderParamBo;
 import com.caimei365.order.model.bo.PayParamBo;
 import com.caimei365.order.model.bo.VipRecordBo;
 import com.caimei365.order.model.dto.PayDto;
@@ -72,6 +74,8 @@ public class PayOrderServiceImpl implements PayOrderService {
     private OrderClubMapper orderClubMapper;
     @Resource
     private RemoteCallService remoteCallService;
+    @Resource
+    private ToolsFeign toolsFeign;
     @Value("${pay.redirect-link}")
     private String redirectLink;
     @Value("${pay.link-page}")
@@ -252,7 +256,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                 }
 
                 //推送信息中心-交易物流
-                MessageCenter messageCenter=new MessageCenter();
+                MessageCenter messageCenter = new MessageCenter();
                 messageCenter.setShopID(null);
                 messageCenter.setClubID(order.getClubId());
                 messageCenter.setUserType(1);
@@ -961,7 +965,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                 }
 
                 //推送信息中心-交易物流
-                MessageCenter messageCenter=new MessageCenter();
+                MessageCenter messageCenter = new MessageCenter();
                 messageCenter.setShopID(null);
                 messageCenter.setClubID(order.getClubId());
                 messageCenter.setUserType(1);
@@ -1613,6 +1617,7 @@ public class PayOrderServiceImpl implements PayOrderService {
 
     @Override
     public void couponCheck() {
+        //优惠券 76,75  兑换码优惠券
         log.info("------------查询是否有优惠券商品下单------------------------>");
         List<CouponCheckVo> checks = payOrderMapper.findCouponOrder();
         log.info("单号列表------------------------>" + checks);
@@ -1628,22 +1633,55 @@ public class PayOrderServiceImpl implements PayOrderService {
 
 
     private void insertCoupon(CouponCheckVo check) {
-        Integer couponId = 7174 == check.getProductId() ? 44 : 49;
-        CouponRecordPo couponRecordPo = new CouponRecordPo();
-        couponRecordPo.setOrderId(check.getOrderId());
-        couponRecordPo.setUserId(check.getUserId());
-        couponRecordPo.setCouponId(couponId);
-        //保存已兑换orderid
-        orderClubMapper.insertCouponRecord(couponRecordPo);
-        CouponClubPo couponClubPo = new CouponClubPo();
-        couponClubPo.setSource(5);
-        couponClubPo.setUserId(check.getUserId());
-        couponClubPo.setCouponId(couponId);
-        couponClubPo.setStatus("1");
-        couponClubPo.setDelFlag("0");
-        couponClubPo.setCreateDate(new Date());
-        orderClubMapper.insertCouponClub(couponClubPo);
-        log.info("兑换优惠券订单-------------------->" + couponRecordPo);
+        Integer couponId = 7620 == check.getProductId() ? 76 : 75;
+        //查询兑换券是否剩余,没有就什么都不干
+        List<CouponRecordPo> couponRecordPos = orderClubMapper.findCouponRemain(couponId);
+        if (null != couponRecordPos && couponRecordPos.size() > 0) {
+            CouponRecordPo couponRecordPo = new CouponRecordPo();
+            couponRecordPo.setOrderId(check.getOrderId());
+            couponRecordPo.setUserId(check.getUserId());
+            couponRecordPo.setCouponId(couponId);
+            //保存已兑换orderid  购买兑换记录
+            orderClubMapper.insertCouponRecord(couponRecordPo);
+            CouponClubPo couponClubPo = new CouponClubPo();
+            couponClubPo.setSource(5);
+            couponClubPo.setUserId(check.getUserId());
+            couponClubPo.setCouponId(couponId);
+            couponClubPo.setStatus("1");
+            couponClubPo.setDelFlag("0");
+            couponClubPo.setCreateDate(new Date());
+            //cm_coupon_club
+            orderClubMapper.insertCouponClub(couponClubPo);
+            //修改cm_coupon_redemption_code 本次美博会是兑换券
+            couponRecordPos.get(0).setRedemptionTime(new Date());
+            couponRecordPos.get(0).setClubCouponId(couponClubPo.getId());
+            couponRecordPos.get(0).setStatus(2);
+            orderClubMapper.updateCodeCoupon(couponRecordPos.get(0));
+            log.info("兑换优惠券订单-------------------->" + couponRecordPo);
+            if (76 == couponId) {
+                OrderParamBo user = orderClubMapper.findUserName(check.getUserId());
+                String userName = user.getUserName();
+                String bindMobile = user.getBindMobile();
+                //B、【采美365】尊敬的会员XXX,您已成功购买”采美云上美博会“线下体验会门票1张,请尽快与您的专属客户经理预约体验时间,如已预约请忽略,体验预约电话:0755-22907771,退订回T
+                String content = "尊敬的会员" + userName + ",您已成功购买”采美云上美博会“线下体验会门票1张,请尽快与您的专属客户经理预约体验时间,如已预约请忽略,体验预约电话:0755-22907771,退订回T";
+                remoteCallService.getSendSms(23, bindMobile, content);
+            }
+            if (75 == couponId) {
+                //A、【采美365】尊敬的会员XXX,您的房间预订成功,广州香格里拉大酒店3天2晚酒店套餐,豪华江景房2晚(含双早),酒店地址:广州市海珠区会展东路1号,凭此短信到酒店前台办理入住登记,入住时间:9月4日-6日,请按时入住酒店,如有问题请拨打客服电话:0755-22907771,退订回T
+                OrderParamBo user = orderClubMapper.findUserName(check.getUserId());
+                String userName = user.getUserName();
+                String bindMobile = user.getBindMobile();
+                String content = "尊敬的会员" + userName + ",您的房间预订成功,广州香格里拉大酒店3天2晚酒店套餐,豪华江景房2晚(含双早),酒店地址:广州市海珠区会展东路1号,凭此短信到酒店前台办理入住登记,入住时间:9月27日-28日,请按时入住酒店,如有问题请拨打客服电话:0755-22907771,退订回T";
+                remoteCallService.getSendSms(23, bindMobile, content);
+                try {
+                    Thread.sleep(10000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+                String contentB = "尊敬的会员" + userName + ",您已成功购买”采美云上美博会“线下体验会门票1张,请尽快与您的专属客户经理预约体验时间,如已预约请忽略,体验预约电话:0755-22907771,退订回T";
+                remoteCallService.getSendSms(23, bindMobile, contentB);
+            }
+        }
     }
 //    /**
 //     * 手动临时分账异步通知回调

+ 125 - 57
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -148,11 +148,13 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     private void setReceiptPermissions(ReceiptUserVo receiptUser) {
         // 用户权限: 1录入收款,2收款列表操作,3关联订单款,4关联返佣款,5口头返佣,6关联供应商退款,7审核订单款,8收款详情分享,
-        // 9非订单款查看(全部),10订单款查看(全部),11返佣款查看(全部),12供应商退款查看(全部),13订单款查看(协销自己机构),14返佣款查看(协销自己机构),15供应商退款查看(协销自己机构)
+        // 9非订单款查看(全部),10订单款查看(全部),11返佣款查看(全部),12供应商退款查看(全部),
+        // 13订单款查看(协销自己机构),14返佣款查看(协销自己机构),15供应商退款查看(协销自己机构)
+        // 16订单款查看(协销小组机构),17返佣款查看(协销小组机构),18供应商退款查看(协销小组机构),19款项详情查看
         List<Integer> permissions = receiptMapper.getPermissionsByUserId(receiptUser.getId());
         receiptUser.setPermissions(permissions);
         List<Integer> tabMenus = new ArrayList<>();
-        if (permissions.contains(10) || permissions.contains(13)) {
+        if (permissions.contains(10) || permissions.contains(13) || permissions.contains(16)) {
             // 订单款tab
             tabMenus.add(1);
         }
@@ -160,11 +162,11 @@ public class ReceiptServiceImpl implements ReceiptService {
             // 非订单款tab
             tabMenus.add(2);
         }
-        if (permissions.contains(11) || permissions.contains(14)) {
+        if (permissions.contains(11) || permissions.contains(14) || permissions.contains(17)) {
             // 返佣款tab
             tabMenus.add(3);
         }
-        if (permissions.contains(12) || permissions.contains(15)) {
+        if (permissions.contains(12) || permissions.contains(15) || permissions.contains(18)) {
             // 供应商退款tab
             tabMenus.add(5);
         }
@@ -546,8 +548,8 @@ public class ReceiptServiceImpl implements ReceiptService {
         ReceiptUserVo receiptUser = null;
         // 订单款
         if (1 == receiptType) {
-            // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构)
-            receiptUser = checkPermissions(Arrays.asList(10, 13), headers);
+            // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构),16订单款查看(协销小组机构)
+            receiptUser = checkPermissions(Arrays.asList(10, 13, 16), headers);
             if (null == receiptUser) {
                 return ResponseJson.error("无权限操作!", null);
             }
@@ -558,6 +560,11 @@ public class ReceiptServiceImpl implements ReceiptService {
                 List<Integer> clubUserIds = getClubUserIds(receiptUser);
                 paramsBo.setUserIds(clubUserIds);
             }
+            if (!permissions.contains(10) && permissions.contains(16)) {
+                //获取该协销小组下所有的userId
+                List<Integer> clubUserIds = getTeamClubUserIds(receiptUser);
+                paramsBo.setUserIds(clubUserIds);
+            }
         }
         // 非订单款
         else if (2 == receiptType) {
@@ -569,8 +576,8 @@ public class ReceiptServiceImpl implements ReceiptService {
         }
         // 返佣款
         else if (3 == receiptType) {
-            // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构)
-            receiptUser = checkPermissions(Arrays.asList(11, 14), headers);
+            // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构),17返佣款查看(协销小组机构)
+            receiptUser = checkPermissions(Arrays.asList(11, 14, 17), headers);
             if (null == receiptUser) {
                 return ResponseJson.error("无权限操作!", null);
             }
@@ -581,11 +588,15 @@ public class ReceiptServiceImpl implements ReceiptService {
                 List<Integer> clubUserIds = getClubUserIds(receiptUser);
                 paramsBo.setUserIds(clubUserIds);
             }
+            if (!permissions.contains(11) && permissions.contains(17)) {
+                List<Integer> clubUserIds = getTeamClubUserIds(receiptUser);
+                paramsBo.setUserIds(clubUserIds);
+            }
         }
         // 供应商退款
         else if (5 == receiptType) {
-            // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构)
-            receiptUser = checkPermissions(Arrays.asList(12, 15), headers);
+            // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构),18,供应商退款查看(协销小组机构)
+            receiptUser = checkPermissions(Arrays.asList(12, 15, 18), headers);
             if (null == receiptUser) {
                 return ResponseJson.error("无权限操作!", null);
             }
@@ -596,6 +607,11 @@ public class ReceiptServiceImpl implements ReceiptService {
                 List<Integer> clubUserIds = getClubUserIds(receiptUser);
                 paramsBo.setUserIds(clubUserIds);
             }
+            if (!permissions.contains(12) && permissions.contains(18)) {
+                // 获取该协销收款用户下的机构userIds
+                List<Integer> clubUserIds = getTeamClubUserIds(receiptUser);
+                paramsBo.setUserIds(clubUserIds);
+            }
         }
 
         if (StringUtils.isNotBlank(smsContent)) {
@@ -619,6 +635,23 @@ public class ReceiptServiceImpl implements ReceiptService {
         return ResponseJson.success(pageInfo);
     }
 
+    /**
+     * 设置协销小组下的机构userIds
+     */
+    private List<Integer> getTeamClubUserIds(ReceiptUserVo receiptUser) {
+        List<Integer> clubUserIds = null;
+        if (1 == receiptUser.getUserType()) {
+            // 获取该协销收款用户下的机构userIds
+            Integer spId = receiptMapper.getServiceProviderId(receiptUser.getUnionId());
+            clubUserIds = receiptMapper.getTeamClubUserIdBySpId(spId);
+            if (null == clubUserIds || CollectionUtils.isEmpty(clubUserIds)) {
+                clubUserIds = new ArrayList<>();
+                clubUserIds.add(0);
+            }
+        }
+        return clubUserIds;
+    }
+
     /**
      * 设置协销用户下的机构userIds
      */
@@ -643,18 +676,21 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<ReceiptVo> getReceiptDetail(Integer id, HttpHeaders headers) {
-        // 检查收款用户权限:9非订单款查看(全部),10订单款查看(全部),13订单款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(9, 10, 13), headers);
-        if (null == receiptUser) {
+        // 检查收款用户权限:9非订单款查看(全部),10订单款查看(全部),13订单款查看(协销自己机构),16订单款查看(协销小组机构)
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(9, 10, 13, 16), headers);
+        // 收款详情改为独立权限,有详情查看权限才能看     19,款项详情查看
+        ReceiptUserVo receiptCheck = checkPermissions(Collections.singletonList(19), headers);
+        if (null == receiptCheck) {
             return ResponseJson.error("无权限操作!", null);
         }
         ReceiptVo receipt = receiptMapper.getReceiptDetail(id);
-        //超级管理员可以看,其他人不能看已确认的单
-        if (null != receipt.getConfirmUserPermissionId()) {
-            if (1 == receiptUser.getUserType() && !receiptUser.getId().equals(receipt.getConfirmUserPermissionId())) {
-                return ResponseJson.error("无权限操作!", null);
-            }
-        }
+
+        //超级管理员可以看,其他人不能看已确认的单(协销小组有了之后暂不要此逻辑)
+//        if (null != receipt.getConfirmUserPermissionId()) {
+//            if (1 == receiptUser.getUserType() && !receiptUser.getId().equals(receipt.getConfirmUserPermissionId())) {
+//                return ResponseJson.error("无权限操作!", null);
+//            }
+//        }
         if (null != receipt) {
             setReceiptDetail(receipt);
             List<OrderVo> orderList = new ArrayList<>();
@@ -675,7 +711,6 @@ public class ReceiptServiceImpl implements ReceiptService {
                     if (receipt.getNewReceiptType() == 2) {
                         orderList = receiptMapper.getReceiptOrderlist(receipt.getId());
                     }
-
                 }
                 log.info("【线下收款】-----已确认--------");
             }
@@ -744,9 +779,11 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<ReceiptVo> getReceiptRefundDetail(Integer id, HttpHeaders headers) {
-        // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(12, 15), headers);
-        if (null == receiptUser) {
+//        // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构),18供应商退款查看(协销小组机构)
+//        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(12, 15, 18), headers);
+        // 收款详情改为独立权限,有详情查看权限才能看     19,款项详情查看
+        ReceiptUserVo receiptCheck = checkPermissions(Collections.singletonList(19), headers);
+        if (null == receiptCheck) {
             return ResponseJson.error("无权限操作!", null);
         }
         ReceiptVo receipt = receiptMapper.getReceiptDetail(id);
@@ -761,9 +798,14 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<ReceiptVo> getReceiptRebateDetail(Integer id, HttpHeaders headers) {
-        // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(11, 14), headers);
-        if (null == receiptUser) {
+        // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构),17返佣款查看(协销小组机构)
+//        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(11, 14, 17), headers);
+//        if (null == receiptUser) {
+//            return ResponseJson.error("无权限操作!", null);
+//        }
+        // 收款详情改为独立权限,有详情查看权限才能看     19,款项详情查看
+        ReceiptUserVo receiptCheck = checkPermissions(Collections.singletonList(19), headers);
+        if (null == receiptCheck) {
             return ResponseJson.error("无权限操作!", null);
         }
         ReceiptVo receipt = receiptMapper.getReceiptDetail(id);
@@ -785,8 +827,8 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<PageInfo<OrderVo>> getReceiptOrderList(Integer id, Integer type, Integer organizeId, String orderReceiptStatus, String keyword, int pageNum, int pageSize, HttpHeaders headers) {
-        // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(10, 13), headers);
+        // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构),16订单款查看(协销小组机构)
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(10, 13, 16), headers);
         if (null == receiptUser) {
             return ResponseJson.error("无权限操作!", null);
         }
@@ -886,8 +928,8 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<OrderVo> getReceiptOrderInfo(Integer orderId, HttpHeaders headers) {
-        // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(10, 13), headers);
+        // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构),16订单款查看(协销小组机构)
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(10, 13, 16), headers);
         if (null == receiptUser) {
             return ResponseJson.error("无权限操作!", null);
         }
@@ -929,8 +971,8 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<PageInfo<ShopOrderVo>> getRefundShopOrderList(Integer id, Integer confirmedType, String shopName, String keyword, int pageNum, int pageSize, HttpHeaders headers) {
-        // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(12, 15), headers);
+        // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构),18供应商退款查看(协销小组机构)
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(12, 15, 18), headers);
         if (null == receiptUser) {
             return ResponseJson.error("无权限操作!", null);
         }
@@ -973,8 +1015,8 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<OrderVo> getRefundShopOrderInfo(Integer orderId, HttpHeaders headers) {
-        // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(12, 15), headers);
+        // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构),18供应商退款查看(协销小组机构)
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(12, 15, 18), headers);
         if (null == receiptUser) {
             return ResponseJson.error("无权限操作!", null);
         }
@@ -1035,8 +1077,8 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     @Override
     public ResponseJson<PageInfo<ShopOrderVo>> getRebateShopOrderList(Integer id, String shopName, int pageNum, int pageSize, HttpHeaders headers) {
-        // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(11, 14), headers);
+        // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构),17返佣款查看(协销小组机构)
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(11, 14, 17), headers);
         if (null == receiptUser) {
             return ResponseJson.error("无权限操作!", null);
         }
@@ -1741,7 +1783,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                             String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
 
                             //推送信息中心-交易物流
-                            MessageCenter messageCenter=new MessageCenter();
+                            MessageCenter messageCenter = new MessageCenter();
                             messageCenter.setShopID(null);
                             messageCenter.setClubID(order.getClubId());
                             messageCenter.setUserType(1);
@@ -2013,8 +2055,9 @@ public class ReceiptServiceImpl implements ReceiptService {
     /**
      * 检查收款权限
      * 1录入收款,2收款列表操作,3关联订单款,4关联返佣款,5口头返佣,6关联供应商退款,7审核订单款,8收款详情分享,
-     * 9非订单款查看(全部),10订单款查看(全部),11返佣款查看(全部),12供应商退款查看(全部),13订单款查看(协销自己机构),14返佣款查看(协销自己机构),15供应商退款查看(协销自己机构)
-     *
+     * 9非订单款查看(全部),10订单款查看(全部),11返佣款查看(全部),12供应商退款查看(全部),
+     * 13订单款查看(协销自己机构),14返佣款查看(协销自己机构),15供应商退款查看(协销自己机构)
+     * 16订单款查看(协销小组机构),17返佣款查看(协销小组机构),18供应商退款查看(协销小组机构),19款项详情查看
      * @param permission 0:登录用户不需要权限,其他具体权限
      * @param headers    HttpHeaders
      * @return null:无权限/权限用户ReceiptUserVo
@@ -2069,6 +2112,7 @@ public class ReceiptServiceImpl implements ReceiptService {
      *                【中信银行】您尾号0897的中信卡于03月14日16:01,支付宝存入人民币5994.06元,当前余额为人民币1000000.00元。
      *                【中信银行】您尾号0897的中信卡于05月29日14:42,二代支付存入人民币10000.00元,当前余额为人民币13871.67元。
      *                您的账户2400于07月21日11:13收入人民币1000.79元,余额1000.79元。【华夏银行】
+     *                您公司账户9452,于08231217收入(网银网上支付)人民币1000.00当前余额1000.19,对方为广州市埃墨莉素生物科技有限公司(账号*0659)(我行吸收的本外币存款依照《存款保险条例》受到保护)【中国银行】
      */
     private ResponseJson<ReceiptVo> identifyMessage(String message) throws Exception {
         if (message.contains("银行")) {
@@ -2095,7 +2139,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                 if (message.contains("支付宝")) {
                     receivableDesc += "-支付宝";
                 }
-            } else if (receivableDesc.contains("广发银行") || receivableDesc.contains("建设银行") || receivableDesc.contains("华夏银行")) {
+            } else if (receivableDesc.contains("广发银行") || receivableDesc.contains("建设银行") || receivableDesc.contains("华夏银行") || receivableDesc.contains("中国银行")) {
                 // 匹配的第一组数字为银行卡尾号
                 Matcher matcherBank = PATTERN_NUMBER.matcher(message);
                 if (matcherBank.find()) {
@@ -2139,13 +2183,21 @@ public class ReceiptServiceImpl implements ReceiptService {
                 } else if (difference < 0) {
                     time = DateUtils.format(DateUtils.addMonth(DateUtils.parseDate(time), -1), "yyyy-MM-dd HH:mm:ss");
                 }
-            } else if(Arrays.asList(22).contains(typeId)){
+            } else if (Arrays.asList(22).contains(typeId)) {
                 time = year + "-" + contentTime.get(1) + "-" + contentTime.get(2) + " " + contentTime.get(3);
                 int difference = DateUtils.differentDays(time);
                 if (difference < 0) {
                     time = Integer.parseInt(year) - 1 + "-" + contentTime.get(1) + "-" + contentTime.get(2) + " " + contentTime.get(3);
                 }
-            }else {
+            } else if (Arrays.asList(23).contains(typeId)) {
+                String s = contentTime.get(1);
+                String s1 = s.substring(0, 2) + "-" + s.substring(2, 4) + " " + s.substring(4, 6) + ":" + s.substring(6, 8) + ":" + "00";
+                time = year + "-" + s1;
+                int difference = DateUtils.differentDays(time);
+                if (difference < 0) {
+                    time = Integer.parseInt(year) + "-" + s1;
+                }
+            } else {
                 time = year + "-" + contentTime.get(1) + "-" + contentTime.get(2) + " " + contentTime.get(3) + ":" + "00";
                 int difference = DateUtils.differentDays(time);
                 if (difference < 0) {
@@ -2166,6 +2218,14 @@ public class ReceiptServiceImpl implements ReceiptService {
                     int index2 = message.indexOf("元", index);
                     money = Double.parseDouble(message.substring(index + 4, index2));
                 }
+            } else if (23 == typeId) {
+                if (message.contains("人民币")) {
+                    index = message.indexOf("人民币");
+                    int index2 = message.indexOf("当前余额", index);
+                    money = Double.parseDouble(message.substring(index + 3, index2));
+                } else {
+                    throw new Exception("短信识别错误!");
+                }
             } else {
                 if (message.contains("入人民币")) {
                     index = message.indexOf("入人民币");
@@ -2211,26 +2271,34 @@ public class ReceiptServiceImpl implements ReceiptService {
     }
 
     /**
-     *    隐藏短信余额
-     *
-     *  贵公司尾号7297的账户5月23日15时30分往来款收入人民币1800.00元,余额7055.50元。对方户名:哈尔滨爱丽达医疗美容管理有限公司爱建医疗美容诊所。[建设银行]
-     *  【广发银行】尊敬的客户,贵司账号后四位0115 的账户于08日13:55 收入一笔方芳尾数为8067的账户转账1850.00元,手续费0.00元。账户余额:1000000.00元。
-     *  【广发银行】您末四位为0115的企业账户于12日16:09收入人民币5000.00元(深圳同城)。账户余额:8907.21元。
-     *  【中信银行】贵公司尾号7172的中信账号于03月15日17:25,二代支付存入人民币3132.30元,当前余额为人民币4373.07元。
-     *  【中信银行】您尾号0897的中信卡于03月06日11:44,存入人民币2358.00元,当前余额为人民币1000000.00元。
-     *  【中信银行】您尾号0897的中信卡于03月19日13:37,财付通快捷支付存入人民币11348.45元,当前余额为人民币1000000.00元。
-     *  【中信银行】您尾号0897的中信卡于03月14日16:01,支付宝存入人民币5994.06元,当前余额为人民币1000000.00元。
-     *  【中信银行】您尾号0897的中信卡于05月29日14:42,二代支付存入人民币10000.00元,当前余额为人民币13871.67元。
-     *  您的账户2400于07月21日11:13收入人民币1000.79元,余额1000.79元。【华夏银行】
+     * 隐藏短信余额
+     * <p>
+     * 贵公司尾号7297的账户5月23日15时30分往来款收入人民币1800.00元,余额7055.50元。对方户名:哈尔滨爱丽达医疗美容管理有限公司爱建医疗美容诊所。[建设银行]
+     * 【广发银行】尊敬的客户,贵司账号后四位0115 的账户于08日13:55 收入一笔方芳尾数为8067的账户转账1850.00元,手续费0.00元。账户余额:1000000.00元。
+     * 【广发银行】您末四位为0115的企业账户于12日16:09收入人民币5000.00元(深圳同城)。账户余额:8907.21元。
+     * 【中信银行】贵公司尾号7172的中信账号于03月15日17:25,二代支付存入人民币3132.30元,当前余额为人民币4373.07元。
+     * 【中信银行】您尾号0897的中信卡于03月06日11:44,存入人民币2358.00元,当前余额为人民币1000000.00元。
+     * 【中信银行】您尾号0897的中信卡于03月19日13:37,财付通快捷支付存入人民币11348.45元,当前余额为人民币1000000.00元。
+     * 【中信银行】您尾号0897的中信卡于03月14日16:01,支付宝存入人民币5994.06元,当前余额为人民币1000000.00元。
+     * 【中信银行】您尾号0897的中信卡于05月29日14:42,二代支付存入人民币10000.00元,当前余额为人民币13871.67元。
+     * 您的账户2400于07月21日11:13收入人民币1000.79元,余额1000.79元。【华夏银行】
+     * 您公司账户9452,于08231217收入(网银网上支付)人民币1000.00当前余额1000.19,对方为广州市埃墨莉素生物科技有限公司(账号*0659)(我行吸收的本外币存款依照《存款保险条例》受到保护)【中国银行】
      */
     private String hiddenBalance(String message) {
         message = message.replace(":", ":").trim();
         int index = message.indexOf("余额");
         if (index != -1) {
-            int index2 = message.indexOf("元", index);
-            String text1 = message.substring(0, index + 2);
-            String text2 = message.substring(index2);
-            message = text1 + "***" + text2;
+            if (message.contains("中国银行")) {
+                int index2 = message.lastIndexOf(",");
+                String text1 = message.substring(0, index + 2);
+                String text2 = message.substring(index2);
+                message = text1 + "***" + text2;
+            } else {
+                int index2 = message.indexOf("元", index);
+                String text1 = message.substring(0, index + 2);
+                String text2 = message.substring(index2);
+                message = text1 + "***" + text2;
+            }
         }
         return message;
     }

+ 427 - 343
src/main/resources/mapper/OrderClubMapper.xml

@@ -2,15 +2,19 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.order.mapper.OrderClubMapper">
     <update id="updateSecondStatus">
-        UPDATE cm_second_hand_detail SET sold = #{sold}
-        WHERE productID = #{productId} AND secondHandType=1
+        UPDATE cm_second_hand_detail
+        SET sold = #{sold}
+        WHERE productID = #{productId}
+          AND secondHandType = 1
     </update>
     <update id="updateUserMoneyByUserId">
-        UPDATE USER SET userMoney = #{userMoney}
+        UPDATE USER
+        SET userMoney = #{userMoney}
         WHERE userID = #{userId}
     </update>
     <update id="updateAbleUserMoneyByUserId">
-        UPDATE USER SET ableUserMoney = #{ableUserMoney}
+        UPDATE USER
+        SET ableUserMoney = #{ableUserMoney}
         WHERE userID = #{userId}
     </update>
     <update id="updateOrderStatus">
@@ -35,20 +39,23 @@
         WHERE orderID = #{orderId}
     </update>
     <update id="cancelBalanceRecord">
-        UPDATE cm_user_balance_record SET
-        remark = #{remark},
-        delFlag = #{delFlag}
-        WHERE userId = #{userId} AND orderId = #{orderId}
+        UPDATE cm_user_balance_record
+        SET remark  = #{remark},
+            delFlag = #{delFlag}
+        WHERE userId = #{userId}
+          AND orderId = #{orderId}
     </update>
     <update id="cancelMainOrder">
-        UPDATE cm_order SET
-        status = #{status},
-        closeReason = #{closeReason},
-        closeTime = #{closeTime}
+        UPDATE cm_order
+        SET status      = #{status},
+            closeReason = #{closeReason},
+            closeTime   = #{closeTime}
         WHERE orderID = #{orderId}
     </update>
     <update id="deleteMainOrder">
-        UPDATE cm_order SET delFlag=1, note=#{note}
+        UPDATE cm_order
+        SET delFlag=1,
+            note=#{note}
         WHERE orderID = #{orderId}
     </update>
     <update id="deleteShopOrder">
@@ -59,7 +66,8 @@
         </foreach>
     </update>
     <update id="deleteOrderReceiptRelation">
-        UPDATE cm_receipt_order_relation SET delFlag=1
+        UPDATE cm_receipt_order_relation
+        SET delFlag=1
         WHERE orderID = #{orderId}
     </update>
     <update id="deleteDiscernReceipt">
@@ -85,27 +93,39 @@
     </update>
     <update id="updateLogisticsBatch">
         UPDATE cm_logistics_batch
-        SET status = 1, updateDate = NOW(), receiptTime = NOW()
+        SET status      = 1,
+            updateDate  = NOW(),
+            receiptTime = NOW()
         WHERE orderID = #{orderId}
     </update>
     <update id="updateOrderShareCode">
         UPDATE cm_mall_order_share_code
-        SET shareCode = #{shareCode}, expiredTime = #{expiredTime}, delFlag = #{delFlag}
+        SET shareCode   = #{shareCode},
+            expiredTime = #{expiredTime},
+            delFlag     = #{delFlag}
         WHERE id = #{id}
     </update>
     <update id="updateCouponClubStatus">
-        UPDATE cm_coupon_club SET
-        status = 2, useDate = NOW(), orderId = #{orderId}
+        UPDATE cm_coupon_club
+        SET status  = 2,
+            useDate = NOW(),
+            orderId = #{orderId}
         WHERE id = #{clubCouponId}
     </update>
     <delete id="deleteOrderSearchHistory">
-        DELETE FROM user_order_history WHERE userId=#{userId}
+        DELETE
+        FROM user_order_history
+        WHERE userId = #{userId}
     </delete>
     <delete id="deleteOrderShareCodeRecord">
-        DELETE FROM cm_mall_share_code_record WHERE orderID = #{orderId}
+        DELETE
+        FROM cm_mall_share_code_record
+        WHERE orderID = #{orderId}
     </delete>
     <update id="deleteCouponClubById">
-        update cm_coupon_club set delFlag = '1' where id = #{clubCouponId}
+        update cm_coupon_club
+        set delFlag = '1'
+        where id = #{clubCouponId}
     </update>
     <insert id="insertOrderShareCode">
         INSERT INTO cm_mall_order_share_code (orderID, shareCode, addTime, expiredTime, delFlag)
@@ -115,132 +135,133 @@
         INSERT INTO cm_mall_share_code_record (openid, orderID, shareCodeId, addTime, delFlag)
         VALUES (#{openId}, #{orderId}, #{shareCodeId}, #{addTime}, #{delFlag})
     </insert>
-    <insert id="insertCouponClub">
+    <insert id="insertCouponClub" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
         INSERT INTO cm_coupon_club(userId, couponId, orderId, returnedId, source, status, createDate, useDate, delFlag)
-        VALUES (#{userId},#{couponId},#{orderId},#{returnedId},#{source},#{status},#{createDate},#{useDate},#{delFlag})
+        VALUES (#{userId}, #{couponId}, #{orderId}, #{returnedId}, #{source}, #{status}, #{createDate}, #{useDate},
+                #{delFlag})
     </insert>
     <insert id="insertCouponRecord">
-        INSERT INTO cm_coupon_buyrecord(couponId,payStatus,userId,orderId,delflag)
-        values (#{couponId},1,#{userId},#{orderId},0)
+        INSERT INTO cm_coupon_buyrecord(couponId, payStatus, userId, orderId, delflag)
+        values (#{couponId}, 1, #{userId}, #{orderId}, 0)
     </insert>
     <select id="countMainOrderByOrderId" resultType="java.lang.Integer">
-        SELECT COUNT(*) FROM cm_order WHERE orderID = #{orderId}
+        SELECT COUNT(*)
+        FROM cm_order
+        WHERE orderID = #{orderId}
     </select>
     <select id="getMainOrderByOrderId" resultType="com.caimei365.order.model.po.OrderPo">
-        SELECT
-            ifnull(orderSeen,0) AS orderSeen,
-            orderID AS orderId,
-            shopOrderIds,
-            orderSource,
-            orderNo,
-            userID AS userId,
-            clubID AS clubId,
-            buyUserID AS buyUserId,
-            orderTime AS orderTime,
-            updateDate AS updateDate,
-            delFlag,
-            userBeans,
-            orderType,
-            orderSubmitType,
-            confirmFlag,
-            onlinePayFlag,
-            splitFlag,
-            payFlag,
-            receiptStatus,
-            payStatus,
-            zeroCostFlag,
-            sendOutStatus,
-            refundType,
-            affirmPaymentFlag,
-            productCount,
-            presentCount,
-            promotionalGiftsCount,
-            hasActProduct,
-            promotionFullReduction,
-            svipFullReduction,
-            secondHandOrderFlag,
-            invoiceFlag,
-            freePostFlag AS postageFlag,
-            freight AS postage,
-            productTotalFee,
-            orderTotalFee,
-            payTotalFee,
-            payableAmount,
-            balancePayFee,
-            discountFee,
-            couponAmount,
-            status,
-            confirmTime,
-            payTime,
-            rebateFlag,
-            clauseID AS clauseId,
-            clauseName
+        SELECT ifnull(orderSeen, 0) AS orderSeen,
+               orderID              AS orderId,
+               shopOrderIds,
+               orderSource,
+               orderNo,
+               userID               AS userId,
+               clubID               AS clubId,
+               buyUserID            AS buyUserId,
+               orderTime            AS orderTime,
+               updateDate           AS updateDate,
+               delFlag,
+               userBeans,
+               orderType,
+               orderSubmitType,
+               confirmFlag,
+               onlinePayFlag,
+               splitFlag,
+               payFlag,
+               receiptStatus,
+               payStatus,
+               zeroCostFlag,
+               sendOutStatus,
+               refundType,
+               affirmPaymentFlag,
+               productCount,
+               presentCount,
+               promotionalGiftsCount,
+               hasActProduct,
+               promotionFullReduction,
+               svipFullReduction,
+               secondHandOrderFlag,
+               invoiceFlag,
+               freePostFlag         AS postageFlag,
+               freight              AS postage,
+               productTotalFee,
+               orderTotalFee,
+               payTotalFee,
+               payableAmount,
+               balancePayFee,
+               discountFee,
+               couponAmount,
+               status,
+               confirmTime,
+               payTime,
+               rebateFlag,
+               clauseID             AS clauseId,
+               clauseName
         FROM cm_order
         WHERE orderID = #{orderId}
     </select>
     <select id="getOrderProductList" resultType="com.caimei365.order.model.po.OrderProductPo">
-        SELECT
-            cop.orderID AS orderId,
-            cop.orderNo,
-            cop.shopOrderID AS shopOrderId,
-            cop.shopOrderNo,
-            cop.orderPromotionsId,
-            cop.productId,
-            cop.shopID AS shopId,
-            cop.name,
-            cop.productImage AS image,
-            cop.price,
-            cop.shopName,
-            cop.costPrice,
-            cop.normalPrice,
-            cop.ladderPriceFlag,
-            cop.discountPrice,
-            cop.discount,
-            cop.totalAmount,
-            cop.totalFee,
-            cop.shouldPayFee,
-            cop.productUnit,
-            cop.num,
-            IFNULL(cop.presentNum,0) AS presentNum,
-            cop.discountFee,
-            cop.includedTax,
-            cop.invoiceType,
-            cop.taxRate,
-            cop.addedValueTax,
-            cop.totalAddedValueTax,
-            cop.singleShouldPayTotalTax,
-            cop.shouldPayTotalTax,
-            cop.shopProductAmount,
-            cop.singleShopFee,
-            cop.shopFee,
-            cop.singleOtherFee,
-            cop.otherFee,
-            cop.singleCmFee,
-            cop.cmFee,
-            cop.payStatus,
-            cop.buyAgainFlag,
-            cop.notOutStore,
-            cop.isActProduct AS actProduct,
-            p.productCategory AS productCategory
+        SELECT cop.orderID               AS orderId,
+               cop.orderNo,
+               cop.shopOrderID           AS shopOrderId,
+               cop.shopOrderNo,
+               cop.orderPromotionsId,
+               cop.productId,
+               cop.shopID                AS shopId,
+               cop.name,
+               cop.productImage          AS image,
+               cop.price,
+               cop.shopName,
+               cop.costPrice,
+               cop.normalPrice,
+               cop.ladderPriceFlag,
+               cop.discountPrice,
+               cop.discount,
+               cop.totalAmount,
+               cop.totalFee,
+               cop.shouldPayFee,
+               cop.productUnit,
+               cop.num,
+               IFNULL(cop.presentNum, 0) AS presentNum,
+               cop.discountFee,
+               cop.includedTax,
+               cop.invoiceType,
+               cop.taxRate,
+               cop.addedValueTax,
+               cop.totalAddedValueTax,
+               cop.singleShouldPayTotalTax,
+               cop.shouldPayTotalTax,
+               cop.shopProductAmount,
+               cop.singleShopFee,
+               cop.shopFee,
+               cop.singleOtherFee,
+               cop.otherFee,
+               cop.singleCmFee,
+               cop.cmFee,
+               cop.payStatus,
+               cop.buyAgainFlag,
+               cop.notOutStore,
+               cop.isActProduct          AS actProduct,
+               p.productCategory         AS productCategory
         FROM cm_order_product cop
-        LEFT JOIN product p ON p.productID = cop.productID
+                 LEFT JOIN product p ON p.productID = cop.productID
         WHERE cop.orderID = #{orderID}
     </select>
     <select id="getOrderReceiptIds" resultType="java.lang.String">
         SELECT c.id
         FROM cm_discern_receipt c
-        LEFT JOIN cm_receipt_order_relation r ON r.receiptID = c.id
+                 LEFT JOIN cm_receipt_order_relation r ON r.receiptID = c.id
         WHERE r.orderID = #{orderID}
-        AND r.relationType = '2'
-        AND r.delFlag = '0'
-        AND c.delFlag = '0'
-        AND c.receiptStatus = '3'
-        AND c.payType != '16'
+          AND r.relationType = '2'
+          AND r.delFlag = '0'
+          AND c.delFlag = '0'
+          AND c.receiptStatus = '3'
+          AND c.payType != '16'
     </select>
     <select id="getPayShopIds" resultType="java.lang.String">
         SELECT payShopID FROM cm_pay_shop_record
         WHERE delFlag = 0
-        AND shopOrderID  IN
+        AND shopOrderID IN
         <foreach collection="shopOrderIds" open="(" separator="," close=")" item="shopOrderId">
             #{shopOrderId}
         </foreach>
@@ -282,56 +303,56 @@
         <if test="orderState == 5 ">
             AND refundType IN(1,2)
         </if>
-            AND orderSeen = 2
+        AND orderSeen = 2
     </select>
     <select id="getOrderList" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
-            ifnull(orderSeen,0) AS orderSeen,
-            orderID AS orderId,
-            shopOrderIds,
-            orderSource,
-            orderNo,
-            userID AS userId,
-            clubID AS clubId,
-            buyUserID AS buyUserId,
-            orderTime,
-            updateDate,
-            delFlag,
-            userBeans,
-            orderType,
-            orderSubmitType,
-            confirmFlag,
-            onlinePayFlag,
-            splitFlag,
-            payFlag,
-            receiptStatus,
-            payStatus,
-            zeroCostFlag,
-            sendOutStatus,
-            refundType,
-            affirmPaymentFlag,
-            productCount,
-            presentCount,
-            promotionalGiftsCount,
-            hasActProduct,
-            promotionFullReduction,
-            secondHandOrderFlag,
-            invoiceFlag,
-            freePostFlag AS postageFlag,
-            freight AS postage,
-            productTotalFee,
-            orderTotalFee,
-            payTotalFee,
-            payableAmount,
-            balancePayFee,
-            discountFee,
-            couponAmount,
-            status,
-            confirmTime,
-            payTime,
-            rebateFlag,
-            clauseID AS clauseId,
-            clauseName
+        ifnull(orderSeen,0) AS orderSeen,
+        orderID AS orderId,
+        shopOrderIds,
+        orderSource,
+        orderNo,
+        userID AS userId,
+        clubID AS clubId,
+        buyUserID AS buyUserId,
+        orderTime,
+        updateDate,
+        delFlag,
+        userBeans,
+        orderType,
+        orderSubmitType,
+        confirmFlag,
+        onlinePayFlag,
+        splitFlag,
+        payFlag,
+        receiptStatus,
+        payStatus,
+        zeroCostFlag,
+        sendOutStatus,
+        refundType,
+        affirmPaymentFlag,
+        productCount,
+        presentCount,
+        promotionalGiftsCount,
+        hasActProduct,
+        promotionFullReduction,
+        secondHandOrderFlag,
+        invoiceFlag,
+        freePostFlag AS postageFlag,
+        freight AS postage,
+        productTotalFee,
+        orderTotalFee,
+        payTotalFee,
+        payableAmount,
+        balancePayFee,
+        discountFee,
+        couponAmount,
+        status,
+        confirmTime,
+        payTime,
+        rebateFlag,
+        clauseID AS clauseId,
+        clauseName
         FROM cm_order
         WHERE delFlag = 0 AND userID = #{userId} and (orderseen IS NULL OR orderseen!=2)
         <if test="orderState == 1 ">
@@ -361,57 +382,57 @@
         ORDER BY orderTime DESC
     </select>
     <select id="getOrderListByKeyword" resultType="com.caimei365.order.model.vo.OrderVo">
-        SELECT DISTINCT
-        ifnull(co.orderSeen,0) AS orderSeen,
-        co.orderID AS orderId,
-        shopOrderIds,
-        co.orderSource,
-        co.orderNo,
-        co.userID AS userId,
-        co.clubID AS clubId,
-        co.buyUserID AS buyUserId,
-        co.orderTime,
-        co.updateDate,
-        co.delFlag,
-        co.userBeans,
-        co.orderType,
-        co.orderSubmitType,
-        co.confirmFlag,
-        co.onlinePayFlag,
-        co.splitFlag,
-        co.payFlag,
-        co.receiptStatus,
-        co.payStatus,
-        co.zeroCostFlag,
-        co.sendOutStatus,
-        co.refundType,
-        co.affirmPaymentFlag,
-        co.productCount,
-        co.presentCount,
-        co.promotionalGiftsCount,
-        co.hasActProduct,
-        co.promotionFullReduction,
-        co.secondHandOrderFlag,
-        co.invoiceFlag,
-        co.freePostFlag AS postageFlag,
-        co.freight AS postage,
-        co.productTotalFee,
-        co.orderTotalFee,
-        co.payTotalFee,
-        co.payableAmount,
-        co.balancePayFee,
-        co.discountFee,
-        co.couponAmount,
-        co.status,
-        co.confirmTime,
-        co.payTime,
-        co.rebateFlag,
-        co.clauseID AS clauseId,
-        co.clauseName
+        SELECT DISTINCT ifnull(co.orderSeen, 0) AS orderSeen,
+                        co.orderID              AS orderId,
+                        shopOrderIds,
+                        co.orderSource,
+                        co.orderNo,
+                        co.userID               AS userId,
+                        co.clubID               AS clubId,
+                        co.buyUserID            AS buyUserId,
+                        co.orderTime,
+                        co.updateDate,
+                        co.delFlag,
+                        co.userBeans,
+                        co.orderType,
+                        co.orderSubmitType,
+                        co.confirmFlag,
+                        co.onlinePayFlag,
+                        co.splitFlag,
+                        co.payFlag,
+                        co.receiptStatus,
+                        co.payStatus,
+                        co.zeroCostFlag,
+                        co.sendOutStatus,
+                        co.refundType,
+                        co.affirmPaymentFlag,
+                        co.productCount,
+                        co.presentCount,
+                        co.promotionalGiftsCount,
+                        co.hasActProduct,
+                        co.promotionFullReduction,
+                        co.secondHandOrderFlag,
+                        co.invoiceFlag,
+                        co.freePostFlag         AS postageFlag,
+                        co.freight              AS postage,
+                        co.productTotalFee,
+                        co.orderTotalFee,
+                        co.payTotalFee,
+                        co.payableAmount,
+                        co.balancePayFee,
+                        co.discountFee,
+                        co.couponAmount,
+                        co.status,
+                        co.confirmTime,
+                        co.payTime,
+                        co.rebateFlag,
+                        co.clauseID             AS clauseId,
+                        co.clauseName
         FROM cm_order co
-        LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
-        WHERE co.delFlag = 0 AND co.userID = #{userId}
-        AND cop.name LIKE CONCAT('%',#{searchWord},'%')
+                 LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
+        WHERE co.delFlag = 0
+          AND co.userID = #{userId}
+          AND cop.name LIKE CONCAT('%', #{searchWord}, '%')
         GROUP BY co.orderID, co.orderTime
         ORDER BY co.orderTime DESC
     </select>
@@ -422,52 +443,51 @@
         ORDER BY id DESC
     </select>
     <select id="getReturnedPurchaseList" resultType="com.caimei365.order.model.vo.ReturnedPurchaseVo">
-        SELECT
-            id,
-            returnedNo,
-            orderID AS orderId,
-            userID AS userId,
-            status,
-            returnedWay,
-            payType,
-            operatingOrderStatus,
-            bankAccountName,
-            bankAccountNo,
-            openBank,
-            bankAccountType,
-            returnedPurchaseFee,
-            refundFee,
-            refundBalanceFee,
-            refundOnlineFee,
-            refundOfflineFee,
-            image1,
-            image2,
-            image3,
-            image4,
-            image5,
-            reviewImage1,
-            reviewImage2,
-            reviewImage3,
-            reviewImage4,
-            reviewImage5,
-            remarks,
-            reviewRemarks,
-            applicationUserID AS applicationUserId,
-            returnTime,
-            reviewUserID AS reviewUserId,
-            confirmReturnTime,
-            delFlag
+        SELECT id,
+               returnedNo,
+               orderID           AS orderId,
+               userID            AS userId,
+               status,
+               returnedWay,
+               payType,
+               operatingOrderStatus,
+               bankAccountName,
+               bankAccountNo,
+               openBank,
+               bankAccountType,
+               returnedPurchaseFee,
+               refundFee,
+               refundBalanceFee,
+               refundOnlineFee,
+               refundOfflineFee,
+               image1,
+               image2,
+               image3,
+               image4,
+               image5,
+               reviewImage1,
+               reviewImage2,
+               reviewImage3,
+               reviewImage4,
+               reviewImage5,
+               remarks,
+               reviewRemarks,
+               applicationUserID AS applicationUserId,
+               returnTime,
+               reviewUserID      AS reviewUserId,
+               confirmReturnTime,
+               delFlag
         FROM cm_returned_purchase
-        WHERE orderID = #{orderId} AND STATUS = '2'
+        WHERE orderID = #{orderId}
+          AND STATUS = '2'
         ORDER BY confirmReturnTime DESC
     </select>
     <select id="getClauseById" resultType="com.caimei365.order.model.vo.ClauseVo">
-        SELECT
-            id,
-            name,
-            content,
-            clauseType,
-            enabledStatus
+        SELECT id,
+               name,
+               content,
+               clauseType,
+               enabledStatus
         FROM bp_clause
         where id = #{clauseId}
     </select>
@@ -475,122 +495,151 @@
         SELECT shopOrderID
         FROM cm_logistics_record
         WHERE orderID = #{orderId}
-        AND logisticsBatchID = #{id}
+          AND logisticsBatchID = #{id}
     </select>
     <select id="getOrderCodeById" resultType="com.caimei365.order.model.vo.OrderShareCodeVo">
-        SELECT
-            id,
-            orderID AS orderId,
-            shareCode,
-            addTime,
-            expiredTime,
-            delFlag
+        SELECT id,
+               orderID AS orderId,
+               shareCode,
+               addTime,
+               expiredTime,
+               delFlag
         FROM cm_mall_order_share_code
-        WHERE orderID = #{orderId} AND delFlag = '0'
+        WHERE orderID = #{orderId}
+          AND delFlag = '0'
         LIMIT 1
     </select>
     <select id="countShareCodeRecord" resultType="java.lang.Integer">
         SELECT COUNT(*)
         FROM cm_mall_share_code_record scr
-        LEFT JOIN cm_mall_order_share_code osc ON scr.shareCodeId = osc.id
-        WHERE scr.openid = #{openId} AND osc.orderID = #{orderId}
-        AND scr.delFlag = '0' AND osc.expiredTime > NOW()
+                 LEFT JOIN cm_mall_order_share_code osc ON scr.shareCodeId = osc.id
+        WHERE scr.openid = #{openId}
+          AND osc.orderID = #{orderId}
+          AND scr.delFlag = '0'
+          AND osc.expiredTime > NOW()
     </select>
     <select id="getOpenidListByPermission" resultType="java.lang.String">
-        SELECT openid FROM `wechat_user` WHERE unionId= #{unionId}
+        SELECT openid
+        FROM `wechat_user`
+        WHERE unionId = #{unionId}
     </select>
 
     <select id="getOpenidunionId" resultType="java.lang.String">
-        SELECT DISTINCT cm.unionId FROM  `cm_mall_operation_user` cm
-        LEFT JOIN `user` u ON u.userID = cm.userID
-        WHERE u.userID=#{userId}
+        SELECT DISTINCT cm.unionId
+        FROM `cm_mall_operation_user` cm
+                 LEFT JOIN `user` u ON u.userID = cm.userID
+        WHERE u.userID = #{userId}
     </select>
 
     <select id="getProductOrder" resultType="java.lang.Integer">
-        SELECT productID FROM `cm_order_product` WHERE orderId=#{orderId}
+        SELECT productID
+        FROM `cm_order_product`
+        WHERE orderId = #{orderId}
     </select>
 
     <select id="getOrderIds" resultType="java.lang.String">
-        SELECT DISTINCT p.name FROM  product p
-         LEFT JOIN cm_order_product cmp ON p.productID = cmp.productID
-         LEFT JOIN `cm_order` cm ON cm.orderNo=cmp.orderNo
-         WHERE cmp.orderId=#{orderId}
+        SELECT DISTINCT p.name
+        FROM product p
+                 LEFT JOIN cm_order_product cmp ON p.productID = cmp.productID
+                 LEFT JOIN `cm_order` cm ON cm.orderNo = cmp.orderNo
+        WHERE cmp.orderId = #{orderId}
     </select>
 
     <select id="getpayTotalFee" resultType="java.lang.Double">
-        SELECT payTotalFee FROM cm_order  WHERE orderId=#{orderId}
+        SELECT payTotalFee
+        FROM cm_order
+        WHERE orderId = #{orderId}
     </select>
 
     <select id="getpayTime" resultType="java.lang.String">
-        SELECT payTime FROM cm_order  WHERE orderId=#{orderId}
+        SELECT payTime
+        FROM cm_order
+        WHERE orderId = #{orderId}
     </select>
 
     <select id="getReceiptStatus" resultType="java.lang.Integer">
-        SELECT receiptStatus FROM cm_order  WHERE orderId=#{orderId}
+        SELECT receiptStatus
+        FROM cm_order
+        WHERE orderId = #{orderId}
     </select>
 
     <select id="getsecondHandOrderFlag" resultType="java.lang.Integer">
-        SELECT secondHandOrderFlag FROM cm_order  WHERE orderId=#{orderId}
+        SELECT secondHandOrderFlag
+        FROM cm_order
+        WHERE orderId = #{orderId}
     </select>
 
     <select id="getrebateFlag" resultType="java.lang.Integer">
-        SELECT rebateFlag FROM cm_order  WHERE orderId=#{orderId}
+        SELECT rebateFlag
+        FROM cm_order
+        WHERE orderId = #{orderId}
     </select>
 
     <select id="getOrderNo" resultType="java.lang.String">
-        SELECT DISTINCT cm.orderNo FROM  product p
-        LEFT JOIN cm_order_product cmp ON p.productID = cmp.productID
-        LEFT JOIN `cm_order` cm ON cm.orderNo=cmp.orderNo
-        WHERE cmp.orderId=#{orderId}
+        SELECT DISTINCT cm.orderNo
+        FROM product p
+                 LEFT JOIN cm_order_product cmp ON p.productID = cmp.productID
+                 LEFT JOIN `cm_order` cm ON cm.orderNo = cmp.orderNo
+        WHERE cmp.orderId = #{orderId}
     </select>
 
     <select id="getOrderMess" resultType="com.caimei365.order.model.vo.OrderVo">
-        SELECT DISTINCT p.`name` AS proName,cm.payFlag AS payFlag,cm.onlinePayFlag AS onlinePayFlag,COUNT(p.name)AS proCount,u.`mobile`AS mobile,cm.orderNo AS orderNo
+        SELECT DISTINCT p.`name`         AS proName,
+                        cm.payFlag       AS payFlag,
+                        cm.onlinePayFlag AS onlinePayFlag,
+                        COUNT(p.name)    AS proCount,
+                        u.`mobile`       AS mobile,
+                        cm.orderNo       AS orderNo
         FROM `cm_order` cm
-         LEFT JOIN cm_order_product cmp ON cm.orderID = cmp.orderID
-         LEFT JOIN  product p ON p.productID=cmp.productID
-         LEFT JOIN `user` u ON u.`userID` = cm.userId
-        WHERE cm.orderId=#{orderId}
+                 LEFT JOIN cm_order_product cmp ON cm.orderID = cmp.orderID
+                 LEFT JOIN product p ON p.productID = cmp.productID
+                 LEFT JOIN `user` u ON u.`userID` = cm.userId
+        WHERE cm.orderId = #{orderId}
     </select>
 
     <select id="getcartNess" resultType="com.caimei365.order.model.vo.OrderVo">
-        SELECT DISTINCT p.`name` AS proName,cm.payFlag AS payFlag,cm.onlinePayFlag AS onlinePayFlag,COUNT(p.name)AS proCount,u.`bindMobile`AS mobile,cm.orderNo AS orderNo
+        SELECT DISTINCT p.`name`         AS proName,
+                        cm.payFlag       AS payFlag,
+                        cm.onlinePayFlag AS onlinePayFlag,
+                        COUNT(p.name)    AS proCount,
+                        u.`bindMobile`   AS mobile,
+                        cm.orderNo       AS orderNo
         FROM `cm_order` cm
-        LEFT JOIN cm_order_product cmp ON cm.orderID = cmp.orderID
-        LEFT JOIN  product p ON p.productID=cmp.productID
-        LEFT JOIN `user` u ON u.`userID` = cm.userId
-        WHERE cm.userID=#{userID}
+                 LEFT JOIN cm_order_product cmp ON cm.orderID = cmp.orderID
+                 LEFT JOIN product p ON p.productID = cmp.productID
+                 LEFT JOIN `user` u ON u.`userID` = cm.userId
+        WHERE cm.userID = #{userID}
     </select>
 
     <select id="userIds" resultType="java.lang.Integer">
-        SELECT  DISTINCT userID FROM cm_cart
-        WHERE
-            YEAR(`addTime`)>YEAR(NOW())-3 AND userID IS NOT NULL
+        SELECT DISTINCT userID
+        FROM cm_cart
+        WHERE YEAR(`addTime`) > YEAR(NOW()) - 3
+          AND userID IS NOT NULL
     </select>
 
     <select id="getClubCouponById" resultType="com.caimei365.order.model.vo.CouponVo">
-        SELECT
-        a.id AS clubCouponId,
-        cc.id AS couponId,
-        cc.couponAmount,
-        cc.touchPrice,
-        cc.startDate,
-        cc.endDate,
-        cc.couponType,
-        cc.userId,
-        cc.shopId,
-        cc.productType,
-        cc.categoryType
+        SELECT a.id  AS clubCouponId,
+               cc.id AS couponId,
+               cc.couponAmount,
+               cc.touchPrice,
+               cc.startDate,
+               cc.endDate,
+               cc.couponType,
+               cc.userId,
+               cc.shopId,
+               cc.productType,
+               cc.categoryType
         FROM cm_coupon_club a
-        LEFT JOIN cm_coupon cc ON a.couponId = cc.id
-        WHERE if(cc.moneyCouponFlag=2,cc.delFlag = 0,cc.id>0)
-        AND a.delFlag = 0
-        AND a.id = #{clubCouponId}
-        AND a.status = 1
-        AND if(cc.vipFlag = 1,
-             NOW() BETWEEN cc.startDate AND cc.endDate,
-             NOW() BETWEEN a.createDate AND date_add(a.createDate, interval cc.usePeriod day))
-        AND cc.status != 2
+                 LEFT JOIN cm_coupon cc ON a.couponId = cc.id
+        WHERE if(cc.moneyCouponFlag = 2, cc.delFlag = 0, cc.id > 0)
+          AND a.delFlag = 0
+          AND a.id = #{clubCouponId}
+          AND a.status = 1
+          AND if(cc.vipFlag = 1,
+                 NOW() BETWEEN cc.startDate AND cc.endDate,
+                 NOW() BETWEEN a.createDate AND if(useTimeFlag=1,cc.endDate,date_add(a.createDate, interval cc.usePeriod day)))
+          AND cc.status != 2
     </select>
     <select id="getOrderCouponRecord" resultType="com.caimei365.order.model.po.CouponOrderRecordPo">
         SELECT id, orderId, clubCouponId, couponType, couponAmount, touchPrice, createDate
@@ -598,30 +647,52 @@
         WHERE orderId = #{orderId}
     </select>
     <select id="getCouponClubById" resultType="com.caimei365.order.model.po.CouponClubPo">
-        SELECT userId,couponId
+        SELECT userId, couponId
         FROM cm_coupon_club
         WHERE id = #{clubCouponId}
     </select>
     <select id="getLatestOrderId" resultType="java.lang.Integer">
-        SELECT orderID FROM cm_order
+        SELECT orderID
+        FROM cm_order
         WHERE userId = #{userId}
-        ORDER BY orderID DESC limit 1
+        ORDER BY orderID DESC
+        limit 1
     </select>
     <select id="findUserId" resultType="java.lang.Integer">
-        select userId from cm_order where orderID = #{orderId}
+        select userId
+        from cm_order
+        where orderID = #{orderId}
     </select>
     <select id="getUserId" resultType="java.lang.Integer">
-        SELECT userID FROM `cm_order` WHERE orderID=#{orderId}
+        SELECT userID
+        FROM `cm_order`
+        WHERE orderID = #{orderId}
     </select>
 
     <update id="AddUnionId">
-        UPDATE `cm_order` SET
-            unionID=#{unionId}
-        WHERE orderID=#{orderId}
+        UPDATE `cm_order`
+        SET unionID=#{unionId}
+        WHERE orderID = #{orderId}
+    </update>
+    <update id="updateCodeCoupon">
+        update cm_coupon_redemption_code
+        <set>
+            <if test="clubCouponId != null">
+                clubCouponId = #{clubCouponId},
+            </if>
+            <if test="status != null">
+                status = #{status},
+            </if>
+            <if test="redemptionTime != null">
+                redemptionTime = #{redemptionTime}
+            </if>
+        </set>
+        where id = #{id}
     </update>
-
     <select id="FromUnionId" resultType="java.lang.String">
-        SELECT unionID FROM `cm_order` WHERE orderID=#{orderId}
+        SELECT unionID
+        FROM `cm_order`
+        WHERE orderID = #{orderId}
     </select>
 
     <select id="UserUnionId" resultType="java.lang.String">
@@ -630,18 +701,31 @@
 
 
     <insert id="addMessageCenter">
-        INSERT INTO message_center (shopID, clubID, userType, messageType, content,time,orderMessageType,orderID,accountType)
-        VALUES (#{shopID}, #{clubID}, #{userType}, #{messageType}, #{content},#{time},#{orderMessageType},#{orderID},#{accountType})
+        INSERT INTO message_center (shopID, clubID, userType, messageType, content, time, orderMessageType, orderID,
+                                    accountType)
+        VALUES (#{shopID}, #{clubID}, #{userType}, #{messageType}, #{content}, #{time}, #{orderMessageType}, #{orderID},
+                #{accountType})
     </insert>
 
     <select id="getVipHistoryCount" resultType="java.lang.Integer">
         SELECT count(1)
         FROM cm_svip_history
-        WHERE  userId = #{userId}
+        WHERE userId = #{userId}
     </select>
 
     <select id="clubIdCule" resultType="java.lang.Integer">
-        SELECT clubID FROM `user` WHERE userId=#{userId}
+        SELECT clubID
+        FROM `user`
+        WHERE userId = #{userId}
+    </select>
+    <select id="findCouponRemain" resultType="com.caimei365.order.model.po.CouponRecordPo">
+        select id, couponId, clubCouponId, redemptionTime, status, redemptionCode
+        from cm_coupon_redemption_code
+        where couponId = #{couponId}
+    </select>
+    <select id="findUserName" resultType="com.caimei365.order.model.bo.OrderParamBo">
+        select userName, bindMobile
+        from user
+        where userId = #{userId}
     </select>
-
 </mapper>

+ 3 - 3
src/main/resources/mapper/OrderCommonMapper.xml

@@ -493,7 +493,7 @@
         </if>
         <if test="userId >0">
             if(#{registerTime} <![CDATA[ > ]]> startDate,#{registerTime},startDate) as startDate,
-            if(receiveFlag=1,endDate,date_add(if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime}
+            if(useTimeFlag=1 or receiveFlag=1,endDate,date_add(if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime}
             <![CDATA[ < ]]> endDate,#{registerTime},startDate),interval receivePeriod day)) as endDate,
         </if>
         couponType,
@@ -531,7 +531,7 @@
                cc.moneyCouponPrice,
                cc.moneyCouponType,
                if(cc.vipFlag = 1, cc.startDate, a.createDate)                                    as startDate,
-               if(cc.vipFlag = 1, cc.endDate, date_add(a.createDate, interval cc.usePeriod day)) as endDate,
+               if(cc.useTimeFlag = 1 or cc.vipFlag = 1, cc.endDate, date_add(a.createDate, interval cc.usePeriod day)) as endDate,
                cc.couponType,
                cc.userId,
                cc.shopId,
@@ -546,7 +546,7 @@
           AND a.status = 1
           AND if(cc.vipFlag = 1,
                  NOW() BETWEEN cc.startDate AND cc.endDate,
-                 NOW() BETWEEN a.createDate AND date_add(a.createDate, interval cc.usePeriod day))
+                 NOW() BETWEEN a.createDate AND if(cc.usePeriod is null,cc.endDate,date_add(a.createDate, interval cc.usePeriod day)))
           AND cc.status != 2
         ORDER BY a.createDate DESC
     </select>

+ 1 - 1
src/main/resources/mapper/PayOrderMapper.xml

@@ -326,7 +326,7 @@
         FROM cm_order_product cop
         LEFT JOIN cm_order co ON cop.orderId = co.orderId
         LEFT JOIN cm_coupon_buyrecord ccb ON ccb.orderId = co.orderId
-        WHERE  cop.productId IN (7174,7175)
+        WHERE cop.productId IN (7619,7620)
           AND co.receiptStatus = 3
           AND co.delflag = 0
           AND cop.orderId NOT IN (SELECT orderId FROM cm_coupon_buyrecord WHERE orderId IS NOT NULL)

+ 68 - 59
src/main/resources/mapper/ReceiptMapper.xml

@@ -283,7 +283,8 @@
                         IFNULL((
                                    SELECT SUM(b.associateAmount)
                                    FROM cm_receipt_order_relation b
-                                   WHERE b.receiptID = cdr.id AND b.delFlag = '0'
+                                   WHERE b.receiptID = cdr.id
+                                     AND b.delFlag = '0'
                                ), 0) AS associateAmount
         FROM cm_discern_receipt cdr
                  LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
@@ -339,9 +340,9 @@
         <if test="endDate != null  and endDate != ''">
             AND cdr.receiptDate <![CDATA[  <  ]]> #{endDate}
         </if>
-          <if test="newReceiptType !=null and newReceiptType !=''">
-             and cdr.newReceiptType=#{newReceiptType}
-          </if>
+        <if test="newReceiptType !=null and newReceiptType !=''">
+            and cdr.newReceiptType=#{newReceiptType}
+        </if>
         <if test="receiptStatusArr != null">
             AND cdr.receiptStatus in
             <foreach collection="receiptStatusArr" open="(" close=")" separator="," item="val">
@@ -382,30 +383,31 @@
                         cdr.cancelReason,
                         cdr.confirmType,
                         cdr.reviewReason,
-                        IFNULL(cdr.newReceiptType,2) AS newReceiptType,
+                        IFNULL(cdr.newReceiptType, 2) AS newReceiptType,
                         cdr.shopName,
-                        receiptUserPermissionID AS receiptUserPermissionId,
-                        confirmUserPermissionID AS confirmUserPermissionId,
-                        reviewUserPermissionID  AS reviewUserPermissionId,
-                        cancelUserPermissionID  AS cancelUserPermissionId,
+                        receiptUserPermissionID       AS receiptUserPermissionId,
+                        confirmUserPermissionID       AS confirmUserPermissionId,
+                        reviewUserPermissionID        AS reviewUserPermissionId,
+                        cancelUserPermissionID        AS cancelUserPermissionId,
                         CASE
                             WHEN cror.relationType = 2 THEN co.organizeID
                             WHEN cror.relationType = 1 THEN cso.organizeID
-                            ELSE '' END         AS organizeId,
+                            ELSE '' END               AS organizeId,
                         CASE
                             WHEN cror.relationType = 2 THEN co.userID
                             WHEN cror.relationType = 1 THEN cso.userID
-                            ELSE '' END         AS userId,
+                            ELSE '' END               AS userId,
                         IFNULL((
                                    SELECT SUM(b.associateAmount)
                                    FROM cm_receipt_order_relation b
-                                   WHERE b.receiptID = cdr.id AND b.delFlag = '0'
-                               ), 0)            AS associateAmount
+                                   WHERE b.receiptID = cdr.id
+                                     AND b.delFlag = '0'
+                               ), 0)                  AS associateAmount
         FROM cm_discern_receipt cdr
                  LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
                  LEFT JOIN cm_order co ON (cror.orderID = co.orderID AND cror.relationType = 2)
                  LEFT JOIN cm_shop_order cso ON (cror.orderID = cso.shopOrderID AND cror.relationType = 1)
-                 -- AND cror.relationType = 1
+             -- AND cror.relationType = 1
 
 
         WHERE cdr.delFlag = '0'
@@ -529,7 +531,7 @@
                  INNER JOIN cm_order o ON cms.orderID = o.orderID
                  INNER JOIN cm_discern_receipt cdr ON cms.shopOrderID = cdr.shopOrderID
                  LEFT JOIN USER u ON o.userID = u.userID
-                 LEFT JOIN shop s ON s.shopID=cms.shopID
+                 LEFT JOIN shop s ON s.shopID = cms.shopID
         WHERE cdr.id = #{receiptId}
           AND o.delFlag = '0'
           AND cms.delFlag = '0'
@@ -538,11 +540,10 @@
     </select>
 
     <select id="getReceiptOrderlists" resultType="com.caimei365.order.model.vo.OrderVo">
-        SELECT
-               cdr.newReceiptType,
+        SELECT cdr.newReceiptType,
                cdr.shopName
         FROM cm_discern_receipt cdr
-                 LEFT JOIN shop s ON s.shopID=cdr.shopID
+                 LEFT JOIN shop s ON s.shopID = cdr.shopID
         WHERE cdr.id = #{receiptId}
           AND cdr.delFlag = '0'
     </select>
@@ -745,15 +746,15 @@
           AND STATUS = '2'
     </select>
     <select id="getShopOrderListByReceiptId" resultType="com.caimei365.order.model.vo.ShopOrderVo">
-        SELECT DISTINCT cso.shopOrderId                                                  AS shopOrderId,
+        SELECT DISTINCT cso.shopOrderId                   AS shopOrderId,
                         cso.shopOrderNo,
-                        cso.orderID                                                      AS orderId,
+                        cso.orderID                       AS orderId,
                         cso.orderNo,
-                        cso.shopID                                                       AS shopId,
+                        cso.shopID                        AS shopId,
                         cso.note,
-                        cso.userID                                                       AS userId,
-                        cso.clubID                                                       AS clubId,
-                        cso.spID                                                         AS spId,
+                        cso.userID                        AS userId,
+                        cso.clubID                        AS clubId,
+                        cso.spID                          AS spId,
                         cso.orderPromotionsId,
                         cso.promotionFullReduction,
                         cso.brokerage,
@@ -773,15 +774,16 @@
                         cso.sendOutStatus,
                         cso.splitFlag,
                         cso.shopOtherFee,
-                        s.name                                                           AS shopName,
-                        ifnull(co.secondHandOrderFlag,0) as secondHandOrderFlag,
+                        s.name                            AS shopName,
+                        ifnull(co.secondHandOrderFlag, 0) as secondHandOrderFlag,
                         IFNULL((SELECT SUM(refundAmount)
-        FROM cm_refund_shop_record
-        WHERE shopOrderID = cso.shopOrderID AND delFlag = 0), 0) AS shopRefundAmount
+                                FROM cm_refund_shop_record
+                                WHERE shopOrderID = cso.shopOrderID
+                                  AND delFlag = 0), 0)    AS shopRefundAmount
         FROM cm_receipt_order_relation cror
-        LEFT JOIN cm_shop_order cso ON cso.shopOrderID = cror.orderID
-        LEFT JOIN shop s ON s.shopID = cso.shopID
-        LEFT JOIN cm_order co on co.orderID = cso.orderID
+                 LEFT JOIN cm_shop_order cso ON cso.shopOrderID = cror.orderID
+                 LEFT JOIN shop s ON s.shopID = cso.shopID
+                 LEFT JOIN cm_order co on co.orderID = cso.orderID
         WHERE cror.delFlag = '0'
           AND cror.relationType = '1'
           AND cror.receiptID = #{receiptId}
@@ -1068,35 +1070,35 @@
     </select>
     <select id="ReceiptDetail" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT DISTINCT
-               cms.orderID,
-               cms.shopOrderID,
-               cms.shopOrderNo,
-               s.name AS shopName,
-               cms.productAmount,
-               cmo.orderNo,
-               u.userName,
-               cmo.confirmTime,
-               cms.receiptAmount,
-               cms.needPayAmount,
-               cms.payedShopAmount,
-               cmo.rebateFee
+        cms.orderID,
+        cms.shopOrderID,
+        cms.shopOrderNo,
+        s.name AS shopName,
+        cms.productAmount,
+        cmo.orderNo,
+        u.userName,
+        cmo.confirmTime,
+        cms.receiptAmount,
+        cms.needPayAmount,
+        cms.payedShopAmount,
+        cmo.rebateFee
         FROM cm_shop_order cms
-                 LEFT JOIN shop s ON s.shopID = cms.shopID
-                 LEFT JOIN cm_order cmo ON cmo.orderID = cms.orderID
-                 LEFT JOIN `user` u ON u.userID = cms.userID
-                 LEFT JOIN cm_discern_receipt csp ON csp.shopOrderID = cms.shopOrderID
-                 <where>
-                     <if test="keyWord !=null and keyWord !=''">
-                         AND (s.name LIKE concat('%',#{keyWord},'%') or cmo.orderId=#{keyWord})
-                     </if>
-                     AND cms.payStatus=3
-                     AND cmo.receiptStatus = 3
-                     AND cmo.confirmTime >= '2021-09-01 00:01:00'
-                     AND cmo.rebateFlag != 1
-                     AND cms.shopId != 998
-                     AND csp.newReceiptType is null
-                     ORDER BY orderId DESC
-                </where>
+        LEFT JOIN shop s ON s.shopID = cms.shopID
+        LEFT JOIN cm_order cmo ON cmo.orderID = cms.orderID
+        LEFT JOIN `user` u ON u.userID = cms.userID
+        LEFT JOIN cm_discern_receipt csp ON csp.shopOrderID = cms.shopOrderID
+        <where>
+            <if test="keyWord !=null and keyWord !=''">
+                AND (s.name LIKE concat('%',#{keyWord},'%') or cmo.orderId=#{keyWord})
+            </if>
+            AND cms.payStatus=3
+            AND cmo.receiptStatus = 3
+            AND cmo.confirmTime >= '2021-09-01 00:01:00'
+            AND cmo.rebateFlag != 1
+            AND cms.shopId != 998
+            AND csp.newReceiptType is null
+            ORDER BY orderId DESC
+        </where>
     </select>
 
     <select id="ReceiptDetails" resultType="com.caimei365.order.model.vo.ShopOrderVo">
@@ -1112,6 +1114,13 @@
 
 
     </select>
+    <select id="getTeamClubUserIdBySpId" resultType="java.lang.Integer">
+        SELECT userID
+        FROM club
+        WHERE spID IN (SELECT serviceId
+                       FROM cm_serviceteam_group
+                       WHERE teamId = (SELECT teamId FROM cm_serviceteam_group WHERE serviceId = #{spId}))
+    </select>
 
 
 </mapper>

+ 30 - 1
src/test/java/com/caimei365/order/OrderApplicationTests.java

@@ -13,6 +13,8 @@
 //import java.io.InputStream;
 //import java.lang.reflect.Type;
 //import java.util.*;
+//import java.util.regex.Matcher;
+//import java.util.regex.Pattern;
 //import java.util.stream.Collectors;
 //
 ///**
@@ -26,6 +28,9 @@
 ////    @Resource
 ////    private SubmitMapper submitMapper;
 //
+//    private static final List<Integer> TIP_FEE_TYPE = Arrays.asList(4, 5, 6, 11);
+//    private static final Pattern PATTERN_NUMBER = Pattern.compile("[\\*0-9\\.:]+");
+//    private static final Pattern PATTERN_ORDER = Pattern.compile("#(.*?)#");
 //
 //    @Test
 //    void contextLoads() throws IOException {
@@ -38,6 +43,30 @@
 ////        System.out.println(System.currentTimeMillis());
 ////        System.out.println(System.currentTimeMillis()/1000);
 ////        System.out.println(Math.floor(MathUtil.div(100, 1.7).doubleValue()));
-//
+//        String message = "您公司账户9452,于08231217收入(网银网上支付)人民币1000.00当前余额***,对方为广州市埃墨莉素生物科技有限公司(账号*0659)(我行吸收的本外币存款依照《存款保险条例》受到保护)【中国银行】";
+////        Matcher matcherBank = PATTERN_NUMBER.matcher(message);
+////        ArrayList<String> strings = new ArrayList<>();
+////        while (matcherBank.find()){
+////            strings.add(matcherBank.group());
+////        }
+////        System.out.println("数组-------------》"+strings.toString());
+////        String substring = strings.get(1).substring(0, 2);
+////        System.out.println("leng"substring.length());
+////        String substring1 = strings.get(1).substring(2, 4);
+////            String substring2 = strings.get(1).substring(4, 6);
+////            String substring3 = strings.get(1).substring(6, 8);
+////            System.out.println(substring+"-"+substring1+"-"+substring2+"-"+substring3);
+////        int index = message.indexOf("余额");
+////        int index2 = message.lastIndexOf(",");
+////        String text1 = message.substring(0, index+2);
+////        String text2 = message.substring(index2);
+////        message = text1 + "***" + text2;
+////        System.out.println(message);
+//        int index = message.indexOf("人民币");
+//        int index2 = message.indexOf("当前余额", index);
+//        String substring = message.substring(index + 3, index2);
+//        System.out.println("substring----------------------->"+substring);
+//        Double money = Double.parseDouble(substring);
+//        System.out.println("money----------------------->"+money);
 //    }
 //}