Эх сурвалжийг харах

Merge branch 'master' of http://101.37.21.97:3000/wash/wash_server_v2

# Conflicts:
#	admin-ui/.env.development
lhch2015 3 долоо хоног өмнө
parent
commit
fb1b45626b
27 өөрчлөгдсөн 218 нэмэгдсэн , 136 устгасан
  1. 7 0
      .gitignore
  2. 6 6
      admin-ui/.env.development
  3. 17 3
      admin-ui/src/views/index.vue
  4. 13 13
      admin-ui/src/views/recharge/type/index.vue
  5. 1 1
      yiqi-admin/src/main/java/com/yiqi/admin/controller/app/AppUserController.java
  6. 38 33
      yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothController.java
  7. 0 1
      yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderDeliveryController.java
  8. 16 3
      yiqi-admin/src/main/java/com/yiqi/task/SettlementStoreOrderTask.java
  9. 0 1
      yiqi-api/src/main/java/com/yiqi/api/controller/order/WeAppOrderGoodsController.java
  10. 3 0
      yiqi-common/src/main/java/com/yiqi/app/domain/vo/AppUserInfoVO.java
  11. 3 0
      yiqi-common/src/main/java/com/yiqi/app/domain/vo/MemberInfoVO.java
  12. 1 1
      yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderDeliveryWay.java
  13. 2 2
      yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderStatusType.java
  14. 2 1
      yiqi-common/src/main/java/com/yiqi/common/enums/OrderGoodsStatusType.java
  15. 6 1
      yiqi-common/src/main/java/com/yiqi/recharge/domain/RechargePasswordCard.java
  16. 6 0
      yiqi-common/src/main/java/com/yiqi/recharge/domain/vo/RechargePasswordCardQueryVO.java
  17. 4 3
      yiqi-core/src/main/java/com/yiqi/app/service/impl/AppUserBillMstrServiceImpl.java
  18. 24 8
      yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementManageBillServiceImpl.java
  19. 10 36
      yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementStoreStatisticsServiceImpl.java
  20. 1 4
      yiqi-core/src/main/java/com/yiqi/order/mapper/OrderGoodsMapper.java
  21. 1 1
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothServiceImpl.java
  22. 2 2
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderGoodsServiceImpl.java
  23. 42 8
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRechargeServiceImpl.java
  24. 6 1
      yiqi-core/src/main/java/com/yiqi/recharge/service/impl/RechargePasswordCardServiceImpl.java
  25. 1 1
      yiqi-core/src/main/resources/mapper/app/AppUserMapper.xml
  26. 2 3
      yiqi-core/src/main/resources/mapper/order/OrderGoodsMapper.xml
  27. 4 3
      yiqi-core/src/main/resources/mapper/recharge/RechargePasswordCardMapper.xml

+ 7 - 0
.gitignore

@@ -28,7 +28,14 @@ target/
 build/
 !**/src/main/**/build/
 !**/src/test/**/build/
+.DS_Store
 
 ### VS Code ###
 .vscode/
 /D:/ruoyi/uploadPath/avatar/2025/05/11/blob_20250511095432A001.png
+/D:/ruoyi/uploadPath/avatar/2025/05/25/blob_20250525113056A001.png
+/D:/ruoyi/uploadPath/avatar/2025/05/25/blob_20250525154424A001.png
+/D:/ruoyi/uploadPath/avatar/2025/05/25/blob_20250525154453A002.png
+/log.path_IS_UNDEFINED/sys-error.log
+/log.path_IS_UNDEFINED/sys-info.log
+/log.path_IS_UNDEFINED/sys-user.log

+ 6 - 6
admin-ui/.env.development

@@ -5,12 +5,12 @@ VUE_APP_TITLE = 一七管理系统
 ENV = 'development'
 
 
-# VUE_APP_BASE_API_HOST = 'http://127.0.0.1:9801'
-# VUE_APP_BASE_API = 'http://127.0.0.1:9801'
-# VUE_APP_BASE_API_HOST = 'http://139.224.65.227:8091/prod-api'
-# VUE_APP_BASE_API = 'http://139.224.65.227:8091/prod-api'
-VUE_APP_BASE_API_HOST = 'http://192.168.5.176:9801/'
-VUE_APP_BASE_API = 'http://192.168.5.176:9801/'
+VUE_APP_BASE_API_HOST = 'http://192.168.5.176:9801'
+VUE_APP_BASE_API = 'http://192.168.5.176:9801'
+#VUE_APP_BASE_API_HOST = 'http://139.224.65.227:8091/prod-api'
+#VUE_APP_BASE_API = 'http://139.224.65.227:8091/prod-api'
+# VUE_APP_BASE_API_HOST = 'http://192.168.5.247:9801/'
+# VUE_APP_BASE_API = 'http://192.168.5.247:9801/'
 
 系统管理费率
 # 路由懒加载

+ 17 - 3
admin-ui/src/views/index.vue

@@ -302,7 +302,23 @@ export default {
           startDate.setDate(today.getDate() - 30)
           break
       }
+      return this.formatDate(startDate)
+    },
+    getStartDateByTimeRange1() {
+      const today = new Date()
+      let startDate = new Date()
 
+      switch (this.rankingTimeRange) {
+        case 'week':
+          startDate.setDate(today.getDate() - 7)
+          break
+        case 'halfMonth':
+          startDate.setDate(today.getDate() - 15)
+          break
+        case 'month':
+          startDate.setDate(today.getDate() - 30)
+          break
+      }
       return this.formatDate(startDate)
     },
     formatDate(date) {
@@ -315,10 +331,8 @@ export default {
       // 获取最近一周的日期范围
       const endDate = new Date()
       const startDate = new Date()
-      startDate.setDate(endDate.getDate() - 7)
-
       const params = {
-        startDate: this.formatDate(startDate),
+        startDate: this.getStartDateByTimeRange1(),
         endDate: this.formatDate(endDate),
         pageSize: 10
       }

+ 13 - 13
admin-ui/src/views/recharge/type/index.vue

@@ -38,11 +38,11 @@
                         </div>
                     </template>
                 </el-table-column>
-                <el-table-column label="有效期" align="center" width="120">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.expireMonth }}个月</span>
-                    </template>
-                </el-table-column>
+<!--                <el-table-column label="赠送有效期" align="center" width="120">-->
+<!--                    <template slot-scope="scope">-->
+<!--                        <span>{{ scope.row.expireMonth }}个月</span>-->
+<!--                    </template>-->
+<!--                </el-table-column>-->
                 <el-table-column label="状态" align="center" width="100">
                     <template slot-scope="scope">
                         <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)" />
@@ -90,13 +90,13 @@
                                 <el-input-number v-model="form.givePointAmount" placeholder="请输入赠送积分" :precision="0" :min="0" :max="999999" style="width: 100%" />
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
-                            <el-form-item label="有效期(月)" prop="expireMonth">
-                                <el-input-number v-model="form.expireMonth" placeholder="请输入有效期" :precision="0" :min="0" :max="999999" style="width: 100%">
-                                    <template slot="append">个月</template>
-                                </el-input-number>
-                            </el-form-item>
-                        </el-col>
+<!--                        <el-col :span="12">-->
+<!--                            <el-form-item label="赠送有效期(月)" prop="expireMonth">-->
+<!--                                <el-input-number v-model="form.expireMonth" placeholder="请输入赠送有效期" :precision="0" :min="0" :max="999999" style="width: 100%">-->
+<!--                                    <template slot="append">个月</template>-->
+<!--                                </el-input-number>-->
+<!--                            </el-form-item>-->
+<!--                        </el-col>-->
                         <el-col :span="12">
                             <el-form-item label="状态" prop="status">
                                 <el-radio-group v-model="form.status">
@@ -237,7 +237,7 @@ export default {
                 rechargeAmount: null,
                 giveAmount: null,
                 givePointAmount: null,
-                expireMonth: null,
+                expireMonth: 12,
                 status: '0',
                 delFlag: null,
                 createById: null,

+ 1 - 1
yiqi-admin/src/main/java/com/yiqi/admin/controller/app/AppUserController.java

@@ -64,7 +64,7 @@ public class AppUserController extends BaseController {
     private IAppUserBillMstrService appUserBillMstrService;
 
     @Validated
-    @GetMapping(value = "getUserByPhone")
+    @GetMapping(value = "/getUserByPhone")
     @ApiOperation("根据手机号查询用户")
     public R<AppUserVO> getUserByPhoneOrName(@RequestParam(required = false) @ApiParam("手机号")
                                              String phoneNumber

+ 38 - 33
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothController.java

@@ -82,6 +82,8 @@ public class OrderClothController extends BaseController {
     @Autowired
     private IPayService payService;
     @Autowired
+    private ISysConfigService sysConfigService;
+    @Autowired
     private ISysOrgService sysOrgService;
     @Autowired
     private IOrderDeliveryService orderDeliveryService;
@@ -200,9 +202,6 @@ public class OrderClothController extends BaseController {
         if (orderCloth == null) {
             throw new ServiceException("未查询到订单信息");
         }
-        if (!orderCloth.getSourceType().equals(SourceType.STORE.getCode())) {
-            throw new ServiceException("该订单不是门店订单,无法三方派单");
-        }
         SysStore sysStore = sysStoreService.getOne(new QueryWrapper<SysStore>().lambda().eq(SysStore::getId, orderCloth.getOrgId()));
         if (sysStore == null) {
             throw new ServiceException("未查询到门店");
@@ -211,9 +210,22 @@ public class OrderClothController extends BaseController {
         switch (EnumUtils.getEnumByType(orderCloth.getOrderStatus(), ClothOrderStatusType.class)) {
             case APPOINTMENT: {
                 // 预约待取,进行取件发单
-                throw new ServiceException("同城配送暂不支持上门取件");
+                OrderDelivery orderDelivery = orderDeliveryService.selectOrderDeliveryByOrderId(orderCloth.getOrderNo(), ClothOrderDeliveryType.collectCloth.getCode());
+                orderDelivery.setDeliveryWay(ClothOrderDeliveryWay.intracityExpress.getCode());
+                orderDelivery.setDeliveryStatus(OrderDeliveryStatusEnum.CREATE_ORDER_SUCCESS.getCode());
+                BigDecimal fee = new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode()));
+                orderDelivery.setFee(fee);
+                orderDelivery.buildUpdateData();
+                orderDeliveryService.updateById(orderDelivery);
+                //更新订单
+                orderCloth.buildUpdateData();
+                orderCloth.setTakeClothTime(DateUtils.getNowDate());
+                //  分配完配送员后,直接待定价,没有中间的流程
+                orderCloth.setOrderStatus(ClothOrderStatusType.HAS_TAKING.getCode());
+                orderClothService.updateById(orderCloth);
+                return R.ok();
             }
-            case WAITING_TO_SEND: {
+            case WAITING_FOR_HANG: {
                 // 待送衣-送衣发单
                 // 1.获取收衣配送单
                 OrderDelivery takeDelivery = orderDeliveryService.selectOrderDeliveryByOrderId(orderCloth.getOrderNo(), ClothOrderDeliveryType.collectCloth.getCode());
@@ -222,36 +234,22 @@ public class OrderClothController extends BaseController {
                 orderDelivery.setOrderSn(orderCloth.getOrderNo());
                 orderDelivery.setClothOrderType(ClothOrderDeliveryType.takeCloth.getCode());
                 orderDelivery.setCreateTime(DateUtils.getNowDate());
-                orderDelivery.setDeliveryStatus(OrderDeliveryStatusEnum.WAIT_DELIVERY.getCode());
+                orderDelivery.setDeliveryStatus(OrderDeliveryStatusEnum.CREATE_ORDER_SUCCESS.getCode());
                 orderDelivery.setStoreId(orderCloth.getOrgId());
-                // 设置未同城配送订单
                 orderDelivery.setDeliveryWay(ClothOrderDeliveryWay.intracityExpress.getCode());
-
-                if (!ClothTakeWay.DELIVERY.getCode().equals(orderCloth.getSendClothWay())) {
-                    throw new ServiceException("该订单客户未选择送货上门,无法分配配送员");
-                }
-                AppUser appUser = appUserService.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getId, orderCloth.getAppUserId()));
-                IntracityExpressCreateOrderResult result = sysStoreIntracityExpressService
-                        .addOrder(IntracityExpressAddOrderRequest
-                                .build(orderCloth, orderDelivery, sysStore, appUser.getWxOpenId()));
-                // 更新订单状态
-                orderClothService.update(new UpdateWrapper<OrderCloth>().lambda()
-                        .eq(OrderCloth::getId, orderCloth.getId())
-                        .set(OrderCloth::getOrderStatus, ClothOrderStatusType.SENDING.getCode()));
-                // 更新配送单状态
-                orderDelivery.setDistance(String.valueOf(result.getDistance()));
-                // 金额 分 -> 元
-                orderDelivery.setFee(BigDecimal.valueOf(result.getFee()).divide(BigDecimal.valueOf(100), 2));
-                orderDelivery.setFetchCode(result.getFetch_code());
-                orderDelivery.setServiceTransId(result.getService_trans_id());
-                orderDelivery.setTransOrderId(result.getTrans_order_id());
+                BigDecimal fee = new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode()));
+                orderDelivery.setFee(fee);
                 orderDelivery.buildCreateData();
                 orderDeliveryService.save(orderDelivery);
 
-                if (result.getErrcode() != 0) {
-                    throw new ServiceException("errorCode:" + result.getErrcode() + ";errorMsg:" + result.getErrmsg());
-                }
-                return R.ok(result);
+                //更新订单
+                orderCloth.buildUpdateData();
+                orderCloth.setTakeClothTime(DateUtils.getNowDate());
+                //  分配完配送员后,直接待评价,没有中间的流程
+                orderCloth.setOrderStatus(ClothOrderStatusType.FINISH.getCode());
+                orderClothService.updateById(orderCloth);
+
+                return R.ok();
             }
             default: {
                 throw new ServiceException("订单状态不正确,无法派单");
@@ -361,7 +359,7 @@ public class OrderClothController extends BaseController {
         }
         orderCloth.setSendClothAppUserId(deliveryManId);
         orderCloth.setSendClothWay(ClothOrderDeliveryWay.delivery.getCode());
-        orderCloth.setOrderStatus(ClothOrderStatusType.SENDING.getCode());
+        orderCloth.setOrderStatus(ClothOrderStatusType.FINISH.getCode());
         orderClothService.updateById(orderCloth);
         // 创建配送单信息
         // 1.获取收衣配送单
@@ -378,6 +376,8 @@ public class OrderClothController extends BaseController {
         AppUser appUser = appUserService.selectAppUserById(deliveryManId);
         orderDelivery.setTransporterName(appUser.getRealName());
         orderDelivery.setTransporterPhone(appUser.getPhoneNumber());
+        BigDecimal fee = new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode()));
+        orderDelivery.setFee(fee);
         orderDelivery.buildCreateData();
         orderDeliveryService.save(orderDelivery);
         return R.ok();
@@ -866,7 +866,10 @@ public class OrderClothController extends BaseController {
         }
         orderCloth.buildUpdateData();
         orderCloth.setTakeClothAppUserId(Long.parseLong(deliveryId));
-        orderCloth.setOrderStatus(ClothOrderStatusType.WAITING_TO_DOOR.getCode());
+        orderCloth.setTakeClothTime(DateUtils.getNowDate());
+        //  分配完配送员后,直接待定价,没有中间的流程
+        orderCloth.setOrderStatus(ClothOrderStatusType.HAS_TAKING.getCode());
+        orderClothService.updateById(orderCloth);
         // 更新配送员id
         OrderDelivery orderDelivery = orderDeliveryService.selectOrderDeliveryByOrderId(orderCloth.getOrderNo(), ClothOrderDeliveryType.collectCloth.getCode());
         orderDelivery.setDeliveryManId(Long.valueOf(deliveryId));
@@ -874,9 +877,11 @@ public class OrderClothController extends BaseController {
         orderDelivery.setTransporterName(appUser.getRealName());
         orderDelivery.setTransporterPhone(appUser.getPhoneNumber());
         orderDelivery.setDeliveryStatus(OrderDeliveryStatusEnum.CREATE_ORDER_SUCCESS.getCode());
+        BigDecimal fee = new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode()));
+        orderDelivery.setFee(fee);
         orderDelivery.buildUpdateData();
         orderDeliveryService.updateById(orderDelivery);
-        return success(orderClothService.updateById(orderCloth));
+        return success();
     }
 
     /**

+ 0 - 1
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderDeliveryController.java

@@ -70,7 +70,6 @@ public class OrderDeliveryController extends BaseController {
     /**
      * 获取订单配送详细信息
      */
-    @PreAuthorize("@ss.hasPermi('order:delivery:query')")
     @GetMapping(value = "/{id}")
     @ApiOperation(value = "获取订单配送详细信息")
     public AjaxResult getInfo(@PathVariable("id") Integer id) {

+ 16 - 3
yiqi-admin/src/main/java/com/yiqi/task/SettlementStoreOrderTask.java

@@ -33,8 +33,21 @@ public class SettlementStoreOrderTask {
             date = DateUtils.parseDate(dateStr);
         }
         //昨天结算
-        log.info("*****开始执行门店衣服订单"+ DateUtil.formatDate(date) +"日结算任务*****");
-        settlementStoreStatisticsService.generateDayStatistics(date);
-        log.info("*****结束执行门店衣服订单"+ DateUtil.formatDate(date) +"日结算任务*****");
+        if(dateStr.contains(";")){
+            Date startDate = DateUtils.parseDate(dateStr.split(";")[0]);
+            Date endDate = DateUtils.parseDate(dateStr.split(";")[1]);
+            //循环统计,从startDate到endDate
+            while (startDate.getTime() <= endDate.getTime()) {
+                log.info("*****开始执行门店衣服订单"+ DateUtil.formatDate(date) +"日结算任务*****");
+                settlementStoreStatisticsService.generateDayStatistics(startDate);
+                log.info("*****结束执行门店衣服订单"+ DateUtil.formatDate(date) +"日结算任务*****");
+                startDate = DateUtils.addDays(startDate, 1);
+            }
+        }else{
+            log.info("*****开始执行门店衣服订单"+ DateUtil.formatDate(date) +"日结算任务*****");
+            settlementStoreStatisticsService.generateDayStatistics(date);
+            log.info("*****结束执行门店衣服订单"+ DateUtil.formatDate(date) +"日结算任务*****");
+        }
+
     }
 }

+ 0 - 1
yiqi-api/src/main/java/com/yiqi/api/controller/order/WeAppOrderGoodsController.java

@@ -62,7 +62,6 @@ public class WeAppOrderGoodsController extends BaseController {
     @Autowired
     private IAppUserService appUserService;
 
-    //<editor-folder desc="列表">
     @ApiOperation(value = "APP分页获取订单商品列表")
     @PostMapping("/getGoodsOrderListByApp")
     public R<List<AppGoodsOrderInfoQueryVO>> getGoodsOrderListByApp(@RequestBody AppGoodsOrderInfoQueryDTO appGoodsOrderInfoQueryDTO) {

+ 3 - 0
yiqi-common/src/main/java/com/yiqi/app/domain/vo/AppUserInfoVO.java

@@ -69,4 +69,7 @@ public class AppUserInfoVO {
 
     @ApiModelProperty("性别(0=男,1=女,2=未知)")
     private String sex;
+
+    @ApiModelProperty("备注")
+    private String remark;
 }

+ 3 - 0
yiqi-common/src/main/java/com/yiqi/app/domain/vo/MemberInfoVO.java

@@ -77,4 +77,7 @@ public class MemberInfoVO {
 
     @ApiModelProperty("福利金余额")
     private BigDecimal welfareBalance;
+
+    @ApiModelProperty("备注")
+    private String remark;
 }

+ 1 - 1
yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderDeliveryWay.java

@@ -7,7 +7,7 @@ package com.yiqi.common.enums;
 public enum  ClothOrderDeliveryWay implements CodeEnum {
     intracityExpress("0", "同城配送"),
     delivery("1", "配送员配送"),
-    thirdExpress("2","快递公司配送"),
+    thirdExpress("2","三方配送"),
             ;
 
     private final String code;

+ 2 - 2
yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderStatusType.java

@@ -10,8 +10,8 @@ public enum ClothOrderStatusType implements CodeEnum{
      APPOINTMENT("0", "待接单")
     , WAITING_TO_DOOR("1","待上门")
     , HAS_TO_DOOR("2","待取衣")
-    , HAS_TAKING("3", "已取衣、待定价")
-    , WAITING_FOR_PAY("4", "已定价、待付款")
+    , HAS_TAKING("3", "待定价")
+    , WAITING_FOR_PAY("4", "待付款")
     , WAIT_FACTORY("5", "待入厂")
     , WASHING("6", "清洗中")
     , HAS_WASH("7", "已出厂")

+ 2 - 1
yiqi-common/src/main/java/com/yiqi/common/enums/OrderGoodsStatusType.java

@@ -8,10 +8,11 @@ public enum OrderGoodsStatusType {
      */
 
 
-    NO_PAY("0", "待支付")
+      NO_PAY("0", "待支付")
     , CONFIRM_PAY("1","支付待确认")
     , NO_SEND("2","待配送")
     , SENDING("3", "配送中")
+    , WAIT_RECEIVE("4", "待收货")
     , CONFIRM_RECEIVE("5", "确认收货")
     , HAS_COMMENT("6", "已评价")
     , REFUND("-2", "已退款")

+ 6 - 1
yiqi-common/src/main/java/com/yiqi/recharge/domain/RechargePasswordCard.java

@@ -144,7 +144,6 @@ public class RechargePasswordCard extends BaseEntity {
      */
     @Excel(name = "用户绑定门店")
     @ApiModelProperty("用户绑定门店")
-
     private Long useBindStoreId;
 
     /**
@@ -189,6 +188,12 @@ public class RechargePasswordCard extends BaseEntity {
     @ApiModelProperty("赠送余额激活时间")
     private Date giveActiveTime;
 
+    /** 赠送余额过期时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @Excel(name = "赠送余额过期时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("赠送余额过期时间")
+    private Date giveExpiredTime;
+
     @ApiModelProperty("是否支持洗衣使用 Y是,N否")
     private String isSupportCloth;
 

+ 6 - 0
yiqi-common/src/main/java/com/yiqi/recharge/domain/vo/RechargePasswordCardQueryVO.java

@@ -135,6 +135,12 @@ public class RechargePasswordCardQueryVO extends BaseEntity {
     @ApiModelProperty("赠送余额激活时间")
     private Date giveActiveTime;
 
+    /** 赠送余额过期时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @Excel(name = "赠送余额过期时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("赠送余额过期时间")
+    private Date giveExpiredTime;
+
     /**
      * 充值门店
      */

+ 4 - 3
yiqi-core/src/main/java/com/yiqi/app/service/impl/AppUserBillMstrServiceImpl.java

@@ -102,11 +102,12 @@ public class AppUserBillMstrServiceImpl extends ServiceImpl<AppUserBillMstrMappe
         appUserBillMstr.buildCreateData();
         appUserBillMstr.setAppUserId(billMstrOrderDTO.getAppUserId());
         appUserBillMstr.setBillType(OrderBillType.recharge.getCode());
+        appUserBillMstr.setOrderId(billMstrOrderDTO.getOrderId());
         appUserBillMstr.setPayTotalAmount(billMstrOrderDTO.getPayTotalAmount());
-        appUserBillMstr.setRechargePayAmount(billMstrOrderDTO.getRechargePayAmount().negate());
-        appUserBillMstr.setGivePayAmount(billMstrOrderDTO.getGivePayAmount().negate());
+        appUserBillMstr.setRechargePayAmount(billMstrOrderDTO.getRechargePayAmount());
+        appUserBillMstr.setGivePayAmount(billMstrOrderDTO.getGivePayAmount());
         appUserBillMstr.setPayType(billMstrOrderDTO.getPayType());
-        appUserBillMstr.setWelfarePayAmount(billMstrOrderDTO.getWelfarePayAmount().negate());
+        appUserBillMstr.setWelfarePayAmount(billMstrOrderDTO.getWelfarePayAmount());
         appUserBillMstr.setRechargeCardNo(billMstrOrderDTO.getRechargeCardNo());
         appUserBillMstr.setIsRefund(SysBoolType.YES.getCode());
         appUserBillMstr.setOrderNo(billMstrOrderDTO.getOrderNo());

+ 24 - 8
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementManageBillServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
 import java.util.concurrent.CompletableFuture;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.yiqi.app.domain.AppUserBillMstr;
 import com.yiqi.app.service.IAppUserBillMstrService;
@@ -36,6 +37,7 @@ import com.yiqi.system.domain.ManageFactory;
 import com.yiqi.system.domain.SysStore;
 import com.yiqi.system.service.IManageFactoryService;
 import com.yiqi.system.service.ISysStoreService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
@@ -52,6 +54,7 @@ import org.springframework.transaction.annotation.Transactional;
  * @date 2024-02-15
  */
 @Service
+@Slf4j
 public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManageBillMapper, SettlementManageBill> implements ISettlementManageBillService {
     @Autowired
     private ISettlementManageFactoryService settlementManageFactoryService;
@@ -99,7 +102,6 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
         // 工厂结算
         this.handleCountFactorySettlement(settlementManageBill);
         //更新结算单
-
         SettlementManageStore settlementManageStore = settlementManageStoreMapper.statisticsByBillId(settlementManageBill.getId());
         settlementManageBill.setStoreNum(settlementManageStore.getStoreNum());
         settlementManageBill.setMaterialImprestAmount(settlementManageStore.getMaterialImprestAmount());
@@ -112,6 +114,13 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
     private SettlementManageBill buildSettlementManageBill(SettlementBillAddDTO settlementBillAddDTO) {
         Date beginTime = DateUtils.strToDate(settlementBillAddDTO.getMonth() + "-01");
         Date endTime = DateUtils.addDays(DateUtils.addMonths(beginTime, 1), -1);
+        //如果存在结算单,则不在生成
+        if (this.count(new QueryWrapper<SettlementManageBill>().lambda()
+                .eq(SettlementManageBill::getBeginTime, beginTime)
+                .eq(SettlementManageBill::getEndTime, endTime)
+                .eq(SettlementManageBill::getDelFlag, StatusType.OK.getCode())) > 0) {
+            throw new ServiceException("已存在该月份的结算单");
+        }
         SettlementManageBill settlementManageBill = new SettlementManageBill();
         settlementManageBill.setBeginTime(beginTime);
         settlementManageBill.setEndTime(endTime);
@@ -288,7 +297,7 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
         stats.setUnionRefundAmount(refundTypeAmounts.getOrDefault("4", BigDecimal.ZERO)); // 银联
         //循环获取总金额
         refundTypeAmounts.keySet().forEach(key -> {
-            stats.setTransactionRefundAmount(stats.getTransactionRefundAmount().add(payTypeAmounts.get(key)));
+            stats.setTransactionRefundAmount(stats.getTransactionRefundAmount().add(refundTypeAmounts.get(key)));
         });
 
         // 5. 退款统计
@@ -348,7 +357,7 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
         stats.setUnionRefundAmount(refundTypeAmounts.getOrDefault("4", BigDecimal.ZERO)); // 银联
         //循环获取总金额
         refundTypeAmounts.keySet().forEach(key -> {
-            stats.setTransactionRefundAmount(stats.getTransactionRefundAmount().add(payTypeAmounts.get(key)));
+            stats.setTransactionRefundAmount(stats.getTransactionRefundAmount().add(refundTypeAmounts.get(key)));
         });
 
         // 5. 退款统计
@@ -465,7 +474,9 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
      */
     private Integer handleCountStoreSettlement(SettlementManageBill settlementManageBill) {
         List<SysStore> storeList = storeService.list(new QueryWrapper<SysStore>().lambda()
-                .eq(SysStore::getDelFlag, StatusType.OK.getCode()));
+                .gt(SysStore::getId, 0)
+                .eq(SysStore::getStatus, StatusType.OK.getCode())
+                .eq(SysStore::getDelFlag, DeleteStatus.OK.getCode()));
         if (CollUtil.isEmpty(storeList)) {
             return 0;
         }
@@ -628,10 +639,13 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
     private void calculateClothAndGoodsOrderStats(SettlementManageStore settlement, StoreSettlementData data) {
         // 1. 统计洗衣订单数据
         OrderStatisticsVO clothStats = calculateClothOrderStats(data.getClothOrders(), data.getClothRefunds());
+
         settlement.setOrderClothAmount(CurrencyUtil.sub(clothStats.getTransactionAmount(), clothStats.getTransactionRefundAmount()));
 
         // 2. 统计商品订单数据
         OrderStatisticsVO goodsStats = calculateGoodsOrderStats(data.getGoodsOrders(), data.getGoodsRefunds());
+        log.info("洗衣订单统计结果:{}", JSONUtil.toJsonStr(clothStats));
+        log.info("商品订单统计结果:{}",  JSONUtil.toJsonStr(goodsStats));
         settlement.setOrderGoodsAmount(CurrencyUtil.sub(goodsStats.getTransactionAmount(), goodsStats.getTransactionRefundAmount()));
         settlement.setOrderAmount(CurrencyUtil.add(settlement.getOrderClothAmount(), settlement.getOrderGoodsAmount()));
 
@@ -647,11 +661,13 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
      * 计算会员相关金额
      */
     private void calculateMembershipAmounts(SettlementManageStore settlement, StoreSettlementData data) {
-
-
-        // 1. 计算会员剩余金额
+        // 1. 计算会员剩余金额,如果赠送时间没有过期也统计进来
         BigDecimal memberBalance = data.getMemberCards().stream()
-                .filter(card -> RechargeStatusType.HAS_USE.getCode().equals(card.getRechargeStatus()))
+                .filter(card -> {
+                   return RechargeStatusType.HAS_USE.getCode().equals(card.getRechargeStatus()) && (
+                           card.getGiveExpiredTime() == null || card.getGiveExpiredTime().after(new Date())
+                           );
+                })
                 .map(card -> card.getRechargeBalance()
                         .add(card.getGiveBalance())
                 )

+ 10 - 36
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementStoreStatisticsServiceImpl.java

@@ -8,10 +8,7 @@ import cn.binarywang.wx.miniapp.api.WxMaShopAfterSaleService;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.yiqi.common.enums.PayStatus;
-import com.yiqi.common.enums.PayType;
-import com.yiqi.common.enums.RechargeRefundStatusType;
-import com.yiqi.common.enums.StatusType;
+import com.yiqi.common.enums.*;
 import com.yiqi.common.utils.CurrencyUtil;
 import com.yiqi.common.utils.DateUtils;
 import com.yiqi.common.utils.SecurityUtils;
@@ -170,10 +167,14 @@ public class SettlementStoreStatisticsServiceImpl extends ServiceImpl<Settlement
     public void generateDayStatistics(Date date) {
         // 1. 获取所有有效门店
         List<SysStore> storeList = storeService.list(new QueryWrapper<SysStore>().lambda()
-                .eq(SysStore::getDelFlag, StatusType.OK.getCode()));
+                        .gt(SysStore::getId, 0)
+                .eq(SysStore::getDelFlag, DeleteStatus.OK.getCode()));
         if (CollUtil.isEmpty(storeList)) {
             return;
         }
+        //删除旧数据
+        baseMapper.delete(new QueryWrapper<SettlementStoreStatistics>().lambda()
+                .eq(SettlementStoreStatistics::getDay, Integer.parseInt(DateUtil.format(date, "yyyyMMdd"))));
 
         // 2. 遍历门店生成统计数据
         for (SysStore store : storeList) {
@@ -186,22 +187,8 @@ public class SettlementStoreStatisticsServiceImpl extends ServiceImpl<Settlement
             settlementStoreStatistics.setChargeRefundAmount(storeChargeStatistics.getRefundAmount());
             settlementStoreStatistics.setChargeArriveAmount(CurrencyUtil.add(storeChargeStatistics.getArriveCashAmount(), storeChargeStatistics.getArriveGiveAmount(), storeChargeStatistics.getArriveWelfareAmount()));
             settlementStoreStatistics.setChargeRefundArriveAmount(CurrencyUtil.add(storeChargeStatistics.getArriveCashRefundAmount(), storeChargeStatistics.getArriveGiveRefundAmount(), storeChargeStatistics.getArriveWelfareRefundAmount()));
-
-            // 2.6 检查是否已存在当日统计数据
-            QueryWrapper<SettlementStoreStatistics> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda()
-                    .eq(SettlementStoreStatistics::getStoreId, store.getId())
-                    .eq(SettlementStoreStatistics::getDay, settlementStoreStatistics.getDay());
-
-            SettlementStoreStatistics existStatistics = baseMapper.selectOne(queryWrapper);
-            if (existStatistics != null) {
-                // 更新已存在的统计数据
-                settlementStoreStatistics.setId(existStatistics.getId());
-                baseMapper.updateById(settlementStoreStatistics);
-            } else {
-                // 插入新的统计数据
-                baseMapper.insert(settlementStoreStatistics);
-            }
+            // 插入新的统计数据
+            baseMapper.insert(settlementStoreStatistics);
         }
         //生成平台商品统计
         SettlementStoreStatistics settlementStoreStatistics = generateStoreStatistics(date, 0L);
@@ -213,21 +200,8 @@ public class SettlementStoreStatisticsServiceImpl extends ServiceImpl<Settlement
 //        settlementStoreStatistics.setChargeArriveAmount(CurrencyUtil.add(storeChargeStatistics.getArriveCashAmount(), storeChargeStatistics.getArriveGiveAmount(), storeChargeStatistics.getArriveWelfareAmount()));
 //        settlementStoreStatistics.setChargeRefundArriveAmount(CurrencyUtil.add(storeChargeStatistics.getArriveCashRefundAmount(), storeChargeStatistics.getArriveGiveRefundAmount(), storeChargeStatistics.getArriveWelfareRefundAmount()));
 
-        // 2.6 检查是否已存在当日统计数据
-        QueryWrapper<SettlementStoreStatistics> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda()
-                .eq(SettlementStoreStatistics::getStoreId, 0L)
-                .eq(SettlementStoreStatistics::getDay, settlementStoreStatistics.getDay());
-
-        SettlementStoreStatistics existStatistics = baseMapper.selectOne(queryWrapper);
-        if (existStatistics != null) {
-            // 更新已存在的统计数据
-            settlementStoreStatistics.setId(existStatistics.getId());
-            baseMapper.updateById(settlementStoreStatistics);
-        } else {
-            // 插入新的统计数据
-            baseMapper.insert(settlementStoreStatistics);
-        }
+        // 插入新的统计数据
+        baseMapper.insert(settlementStoreStatistics);
     }
 
     @Override

+ 1 - 4
yiqi-core/src/main/java/com/yiqi/order/mapper/OrderGoodsMapper.java

@@ -21,7 +21,7 @@ import org.apache.ibatis.annotations.Param;
  */
 @Mapper
 public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
-    //<editor-folder desc="基础韩素">
+
     /**
      * 查询商品订单
      *
@@ -47,9 +47,6 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
      * @return 商品订单集合
      */
     public List<GoodsOrderRefundQueryVO> getRefundOrderGoodsList(GoodsOrderRefundQueryDTO goodsOrderRefundQueryDTO);
-    //</editor-folder>
-
-    //<editor-folder desc="app应用接口">
 
     /**
      * APP分页获取订单商品列表

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothServiceImpl.java

@@ -1194,7 +1194,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
                 }
             }
             if (orderStatus.equals(ClothOrderStatusType.HAS_WASH.getCode())) {
-                //待入厂,判断所有的衣服和附件是否都已经入厂,如果都入厂,则改变状态
+                //已出厂,判断所有的衣服和附件是否都已经入厂,如果都入厂,则改变状态
                 Boolean res = orderClothItemService.checkClothItemStatus(orderCloth.getId(), ClothOrderFlowStatus.hangering.getCode());
                 if (res) {
                     OrderCloth orderClothUpdate = new OrderCloth();

+ 2 - 2
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderGoodsServiceImpl.java

@@ -360,7 +360,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
             }
             case LIFE_SERVICE:
             case CAR: {
-                orderGoods.setOrderStatus(OrderGoodsStatusType.CONFIRM_PAY.getCode());
+                orderGoods.setOrderStatus(OrderGoodsStatusType.WAIT_RECEIVE.getCode());
                 break;
             }
         }
@@ -555,7 +555,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         if (orderGoods == null) {
             throw new GlobalException("订单不存在");
         }
-        if (!OrderGoodsStatusType.NO_SEND.getCode().equals(orderGoods.getOrderStatus()) || !OrderGoodsStatusType.SENDING.getCode().equals(orderGoods.getOrderStatus())) {
+        if (!(OrderGoodsStatusType.WAIT_RECEIVE.getCode().equals(orderGoods.getOrderStatus()) || OrderGoodsStatusType.SENDING.getCode().equals(orderGoods.getOrderStatus()))) {
             throw new GlobalException("订单状态不对,无法确认完成");
         }
         // 更新订单状态

+ 42 - 8
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRechargeServiceImpl.java

@@ -413,11 +413,22 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
     @Override
     @Transactional(rollbackFor = Exception.class)
     public OrderPayResultVO createRechargeOrder(OrderRechargeCreateDTO createDTO) {
+        //卡密充值
+        if(StringUtils.isNotEmpty(createDTO.getCardNo()) && StringUtils.isNotEmpty(createDTO.getPassword())){
+            OrderRechargeCreateDTO orderRechargeCreateDTO = new OrderRechargeCreateDTO();
+            orderRechargeCreateDTO.setOrderSource(OrderSourceType.OFFLINE.getCode());
+            orderRechargeCreateDTO.setCardNo(createDTO.getCardNo());
+            orderRechargeCreateDTO.setPassword(createDTO.getPassword());
+            orderRechargeCreateDTO.setRechargeType(RechargeTypeEnum.CARD.getCode());
+            orderRechargeCreateDTO.setAppUserId(createDTO.getAppUserId());
+            orderRechargeCreateDTO.setOrgId(createDTO.getOrgId());
+            OrderPayResultVO orderPayResultVO = insertOrderRechargeByPasscard(orderRechargeCreateDTO);
+            return orderPayResultVO;
+        }
         // 1. 校验参数
         if (StringUtils.isEmpty(createDTO.getPayType())) {
             throw new ServiceException("请选择支付方式");
         }
-
         // 2. 获取充值套餐信息
         RechargePackageInfo packageInfo = getRechargePackageInfo(createDTO.getRechargeTypeId(), createDTO.getOrgId());
 
@@ -461,6 +472,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
 
         // 1. 设置基本信息
         orderRecharge.setOrderNo(orderNoUtils.getRechargeOrderNo());
+        orderRecharge.setSourceType(SourceType.STORE.getCode());
         orderRecharge.setAppUserId(createDTO.getAppUserId());
         orderRecharge.setRechargeType(createDTO.getRechargeType());
         orderRecharge.setRechargeTypeId(createDTO.getRechargeTypeId());
@@ -621,6 +633,13 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
                 orderRechargeCreateDTO.getPassword()
         );
 
+        //如果是线下门店开卡,要判断线下门店跟绑定门店是否一致
+        if(OrderSourceType.OFFLINE.getCode().equals(orderRechargeCreateDTO.getOrderSource())){
+            if (rechargeCard.getRechargeStoreId() != null &&
+                    !rechargeCard.getRechargeStoreId().equals(orderRechargeCreateDTO.getOrgId())) {
+                throw new ServiceException("充值卡与门店不匹配");
+            }
+        }
         try {
             // 3. 创建充值订单
             OrderRecharge orderRecharge = createRechargeOrder(rechargeCard, orderRechargeCreateDTO);
@@ -628,6 +647,9 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
             // 4. 更新充值卡状态
             updateRechargeCardStatus(rechargeCard, orderRecharge);
 
+            // 添加用户积分
+            appUserPointLogService.addPoint(orderRecharge.getAppUserId(), orderRecharge.getGivePointAmount().intValue(), orderRecharge.getOrderNo(), MemberPointSourceEnum.RECHARGEADD, "会员储值赠送");
+
             // 5. 记录账单流水
             createBillRecord(orderRecharge, rechargeCard);
 
@@ -666,6 +688,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
             throw new ServiceException("充值卡已过期");
         }
 
+
         return card;
     }
 
@@ -682,15 +705,18 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         orderRecharge.setAppUserId(dto.getAppUserId());
         orderRecharge.setRechargeType(dto.getRechargeType());
         orderRecharge.setOrderSource(dto.getOrderSource());
-        orderRecharge.setStoreId(card.getUseBindStoreId());
-        orderRecharge.setCreateBy(AuthHolder.userName());
-        orderRecharge.setCreateById(AuthHolder.userId());
-        orderRecharge.setCreateTime(DateUtils.getNowDate());
+        orderRecharge.setStoreId(card.getRechargeStoreId());
+        orderRecharge.setSourceType(SourceType.STORE.getCode());
+        orderRecharge.setDelFlag(DeleteStatus.OK.getCode());
+        orderRecharge.buildCreateData();
 
         // 设置支付相关信息
         orderRecharge.setPayTime(DateUtils.getNowDate());
         orderRecharge.setPayType(PayType.RECHARGE_CARD.getCode());
+        orderRecharge.setPayStatus(PayStatus.HAS_PAY.getCode());
         orderRecharge.setOrderStatus(OrderRechargeStatus.YES_PAY.getCode());
+        orderRecharge.setRefundStatus(OrderRefundStatus.OK.getCode());
+        orderRecharge.setRefundAmount(BigDecimal.ZERO);
         orderRecharge.setRechargeCardNo(card.getCardNo());
 
         // 设置金额信息
@@ -699,6 +725,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         orderRecharge.setGiveAmount(card.getGiveAmount());
         orderRecharge.setWelfareAmount(card.getWelfareAmount());
         orderRecharge.setGivePointAmount(card.getGivePointAmount());
+        orderRecharge.setCouponDeductAmount(BigDecimal.ZERO);
 
         // 设置支付渠道金额
         orderRecharge.setCashPayAmount(card.getRechargeAmount());
@@ -716,6 +743,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         card.setRechargeUserId(order.getAppUserId());
         card.setRechargeTime(DateUtils.getNowDate());
         card.setRechargeStatus(RechargeStatusType.HAS_USE.getCode());
+        card.setUseBindStoreId(order.getStoreId());
         card.setOrderNo(order.getOrderNo());
         card.setUpdateTime(DateUtils.getNowDate());
         card.setUpdateBy(AuthHolder.userName());
@@ -733,7 +761,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         // 设置账单基本信息
         billDTO.setAppUserId(order.getAppUserId());
         billDTO.setOrgId(order.getStoreId());
-        billDTO.setSourceType(order.getOrderSource());
+        billDTO.setSourceType(order.getSourceType());
         billDTO.setOrderNo(order.getOrderNo());
         billDTO.setOrderType(OrderType.recharge.getCode());
         billDTO.setUseBindStoreId(card.getUseBindStoreId());
@@ -778,10 +806,13 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
             return;
         }
         Date date = DateUtils.getNowDate();
-        updateOrderStatusAndPayTime(orderRecharge, outTradeNo, date);
+
 
         // 同步生成密码卡
         RechargePasswordCard rechargePasswordCard = buildRechargePasswordCardData(orderRecharge);
+        orderRecharge.setRechargeCardNo(rechargePasswordCard.getCardNo());
+        //  更新订单信息
+        updateOrderStatusAndPayTime(orderRecharge, outTradeNo, date);
 
         // 添加用户积分
         appUserPointLogService.addPoint(orderRecharge.getAppUserId(), orderRecharge.getGivePointAmount().intValue(), orderRecharge.getOrderNo(), MemberPointSourceEnum.RECHARGEADD, "会员储值赠送");
@@ -809,6 +840,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         billMstrOrderDTO.setAppUserId(orderRecharge.getAppUserId());
         billMstrOrderDTO.setSourceType(orderRecharge.getSourceType());
         billMstrOrderDTO.setOrgId(orderRecharge.getStoreId());
+        billMstrOrderDTO.setOrderId(orderRecharge.getId());
         billMstrOrderDTO.setOrderNo(orderRecharge.getOrderNo());
         billMstrOrderDTO.setOrderType(OrderType.recharge.getCode());
         billMstrOrderDTO.setRechargePayAmount(orderRecharge.getRechargeAmount());
@@ -817,6 +849,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         billMstrOrderDTO.setGivePayAmount(orderRecharge.getGiveAmount());
         billMstrOrderDTO.setRechargeCardNo(orderRecharge.getRechargeCardNo());
         billMstrOrderDTO.setPayType(orderRecharge.getPayType());
+        billMstrOrderDTO.setRechargeCardNo(orderRecharge.getRechargeCardNo());
         BigDecimal totalPayAmount = CurrencyUtil.add(orderRecharge.getRechargeAmount(), orderRecharge.getGiveAmount(), orderRecharge.getWelfareAmount());
         billMstrOrderDTO.setPayTotalAmount(totalPayAmount);
         billMstrOrderDTO.setRemark("充值卡:" + rechargePasswordCard.getCardNo() + ",储值到账" + totalPayAmount + "元");
@@ -904,6 +937,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         orderRecharge.setDelFlag(DeleteStatus.OK.getCode());
         orderRecharge.setOrderStatus(OrderRechargeStatus.YES_PAY.getCode());
         orderRecharge.setPayStatus(PayStatus.HAS_PAY.getCode());
+        orderRecharge.setSourceType(SourceType.STORE.getCode());
         orderRecharge.setOrderSource(orderRechargeCreateDTO.getOrderSource());
         orderRecharge.setRechargeCardNo(rechargePasswordCard.getCardNo());
         orderRecharge.setPayAmount(rechargePasswordCard.getRechargeAmount());
@@ -966,7 +1000,6 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         rechargePasswordCard.setRechargeBalance(rechargePasswordCard.getRechargeAmount());
         rechargePasswordCard.setGiveBalance(rechargePasswordCard.getGiveAmount());
         rechargePasswordCard.setWelfareBalance(rechargePasswordCard.getWelfareAmount());
-
         rechargePasswordCard.setRechargeStatus(RechargeStatusType.HAS_USE.getCode());
         rechargePasswordCard.setRechargeTime(DateUtils.getNowDate());
         rechargePasswordCard.setRechargeUserId(orderRecharge.getAppUserId());
@@ -1256,6 +1289,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         BillMstrOrderDTO billMstrOrderDTO = new BillMstrOrderDTO();
         billMstrOrderDTO.setAppUserId(orderRecharge.getAppUserId());
         billMstrOrderDTO.setOrgId(orderRecharge.getStoreId());
+        billMstrOrderDTO.setOrderId(orderRecharge.getId());
         billMstrOrderDTO.setSourceType(orderRecharge.getSourceType());
         billMstrOrderDTO.setOrderNo(orderRecharge.getOrderNo());
         billMstrOrderDTO.setOrderType(OrderType.recharge.getCode());

+ 6 - 1
yiqi-core/src/main/java/com/yiqi/recharge/service/impl/RechargePasswordCardServiceImpl.java

@@ -564,7 +564,7 @@ public class RechargePasswordCardServiceImpl extends ServiceImpl<RechargePasswor
         WeAppCardsUseRecordsVO recordInfo = baseMapper.getUseRecordsByCardId(weAppCardRecordByCardDTO);
         recordInfo.setUserBillMstrList(appUserBillMstrService.list(new QueryWrapper<AppUserBillMstr>().lambda()
                 .eq(AppUserBillMstr::getRechargeCardNo, recordInfo.getCardNo())
-                        .eq(AppUserBillMstr::getAppUserId, weAppCardRecordByCardDTO.getAppUserId())
+                .eq(AppUserBillMstr::getAppUserId, weAppCardRecordByCardDTO.getAppUserId())
                 .orderByDesc(AppUserBillMstr::getCreateTime)
                 .last("limit " + weAppCardRecordByCardDTO.getStartRow() + "," + weAppCardRecordByCardDTO.getPageSize())));
         return recordInfo;
@@ -634,6 +634,11 @@ public class RechargePasswordCardServiceImpl extends ServiceImpl<RechargePasswor
             rechargePasswordCard.setGiveBalance(CurrencyUtil.sub(rechargePasswordCard.getGiveBalance(), updateRechargePasswordCard.getGiveBalance()));
             rechargePasswordCard.setWelfareBalance(CurrencyUtil.sub(rechargePasswordCard.getWelfareBalance(), updateRechargePasswordCard.getWelfareBalance()));
             rechargePasswordCard.buildUpdateData();
+            if (rechargePasswordCard.getRechargeBalance().compareTo(BigDecimal.ZERO) == 0) {
+                //如果卡余额为0,则设置赠送余额激活时间,过期时间是1年
+                rechargePasswordCard.setGiveActiveTime(DateUtils.getNowDate());
+                rechargePasswordCard.setGiveExpiredTime(DateUtils.addMonths(DateUtils.getNowDate(), 12));
+            }
             baseMapper.updateById(rechargePasswordCard);
             //保存日志
             BillMstrOrderDTO billMstrOrderDTO = new BillMstrOrderDTO();

+ 1 - 1
yiqi-core/src/main/resources/mapper/app/AppUserMapper.xml

@@ -49,7 +49,7 @@
     </select>
     <select id="getAppUserInfoById" resultType="com.yiqi.app.domain.vo.AppUserInfoVO">
         select a.id as appUserId, a.wx_open_id as wxOpenId, a.phone_number as phoneNumber, a.nick_name as nickName, a.real_name as realName,
-               a.level as level, a.birthday as birthday, a.sex as sex, a.avatar_url as avatarUrl,
+               a.level as level, a.birthday as birthday, a.sex as sex, a.avatar_url as avatarUrl, a.remark as remark,
                b.province , b.city, b.area, b.address, b.address_detail as addressDetail, b.contact_name as contactName, b.contact_phone as contactPhone
         from app_user a left join  app_user_address b on a.id = b.app_user_id  and b.is_default = 'Y'
         where a.id = #{appUserId}

+ 2 - 3
yiqi-core/src/main/resources/mapper/order/OrderGoodsMapper.xml

@@ -120,15 +120,14 @@
     <select id="getGoodsOrderListByApp" resultType="com.yiqi.order.domain.vo.weapp.AppGoodsOrderInfoQueryVO">
         select a.*
         from  order_goods a
-        where a.source_type = '00' and  a.del_flag='0' and a.app_user_id = #{appUserId}
+        where a.del_flag='0' and a.app_user_id = #{appUserId}
         <if test="orderStatus != null  and orderStatus != ''">
             and a.order_status = #{orderStatus}
         </if>
         <if test="goodsType != null  and goodsType != ''">
             and a.goods_type = #{goodsType}
         </if>
-        GROUP BY a.order_no
-        ORDER BY a.create_time DESC
+        ORDER BY a.id DESC
         limit #{startRow},#{pageSize}
     </select>
     <select id="selectOrderGoodsByOrderNos" resultType="com.yiqi.order.domain.vo.OrderRetailGoodsSkuVO">

+ 4 - 3
yiqi-core/src/main/resources/mapper/recharge/RechargePasswordCardMapper.xml

@@ -124,7 +124,7 @@
         IFNULL(SUM(welfare_balance), 0) as welfareBalance
         from recharge_password_card
         where recharge_user_id = #{appUserId} and recharge_status = '1'
-        and (expire_time &gt;= now() or expire_time IS NULL)
+        and (give_expired_time &gt;= now() or give_expired_time IS NULL)
         and del_flag='0'
         <if test="orderType != null and orderType != ''">
             <if test="orderType == '0'.toString()">
@@ -194,7 +194,7 @@
         select recharge_user_id as userId, sum(recharge_balance) as rechargeBalance,
         sum(give_balance) as giveBalance, sum(welfare_balance) as welfareBalance       from recharge_password_card
         where del_flag='0' and recharge_status = '1'
-        and (expire_time &gt;= #{expireDate} or expire_time IS NULL)
+        and (give_expired_time &gt;= #{expireDate} or give_expired_time IS NULL)
         and (recharge_balance > 0 or give_balance > 0 or welfare_balance > 0)
         <if test="userIdList != null and userIdList.size > 0">
             and recharge_user_id in
@@ -275,6 +275,7 @@
     <select id="selectRechargePasswordCardListByAppUserIdAndBuyGoodsType"
             resultType="com.yiqi.recharge.domain.RechargePasswordCard">
         select * from recharge_password_card where recharge_user_id = #{appUserId} and recharge_status = 1 and del_flag = 0
+        and (give_expired_time &gt;= now() or give_expired_time IS NULL)
         <if test="buyGoodsType != null and buyGoodsType == '0'">
             and is_support_cloth = 'Y'
         </if>
@@ -287,7 +288,7 @@
         <if test="buyGoodsType != null and buyGoodsType == '3'">
             and is_support_car = 'Y'
         </if>
-        order by recharge_time desc
+        order by id asc
     </select>
 
     <select id="selectRechargePasswordCardBySn" resultType="com.yiqi.recharge.domain.RechargePasswordCard"