From e7f23c16b1d1c6553a0442f3d0d129248d267670 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 16 十二月 2024 15:57:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java            |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderBalancePaymentService.java           |   11 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/ExpressDeliveryUtil.java                     |  101 +++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java                               |   58 ++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java                     |    6 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderBalancePaymentServiceImpl.java  |   15 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100ListVo.java                     |   22 +
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java                                  |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java                           |   39 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java |   17 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java                   |   48 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                |  322 +++++++++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderBalancePaymentMapper.java             |   11 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java                           |   10 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java            |   22 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/GetSysUserList.java                       |    1 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java          |   50 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/MapTrackKD100Vo.java                      |   36 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java                             |   32 +
 ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysUserMapper.xml                            |   18 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java       |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java                 |    2 
 ruoyi-service/ruoyi-order/pom.xml                                                                         |    6 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100Vo.java                         |   27 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java                  |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java         |   73 ++-
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderBalancePaymentMapper.xml                   |    6 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderBalancePayment.java                    |   39 +
 ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java                                               |   12 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java               |   25 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java                         |   47 ++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java            |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java             |   56 ++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java            |   10 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java          |   19 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                 |   40 ++
 36 files changed, 1,117 insertions(+), 73 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
index 2c71c52..ca8a349 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
@@ -72,14 +72,25 @@
 				log.error("获取直推会员数失败:{}", cause.getMessage());
 				throw new RuntimeException("获取直推会员数失败");
 			}
-
-            @Override
+			
+			@Override
+			public R<List<AppUser>> getAppUserByName(String name) {
+				return R.fail("根据用户名称模糊搜索用户列表失败:" + cause.getMessage());
+			}
+			
+			@Override
+			public R<List<AppUser>> getAppUserByPhone(String phone) {
+				return R.fail("根据用户电话模糊搜索用户列表失败:" + cause.getMessage());
+			}
+			
+			
+			@Override
             public R<Void> addAppUserShop(AppUserShop appUserShop) {
                 return R.fail("添加失败");
             }
 
 			@Override
-			public R<AppUser> getAppUserByPhone(String phone) {
+			public R<AppUser> getAppUserByPhone1(String phone) {
 				return R.fail("通过手机号查询用户失败");
 			}
 
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 5c72e48..a9d893c 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -58,9 +58,27 @@
 	@PostMapping("/app-user/getVipCount")
 	R<Long> getVipCount(@RequestParam("userId")Long userId, @RequestParam("vipId") Integer vipId );
 
-	@GetMapping("/app-user/getAppUserByPhone")
-    R<AppUser> getAppUserByPhone(@RequestParam("phone") String phone);
 
 	@GetMapping("/app-user/listByIds")
 	List<AppUser> listByIds(@RequestParam("ids") List<Long> list);
+
+	/**
+	 * 根据用户名称模糊搜索用户列表
+	 * @param name
+	 * @return
+	 */
+	@PostMapping("/app-user/getAppUserByName")
+	R<List<AppUser>> getAppUserByName(@RequestParam("name") String name);
+
+	/**
+	 * 根据用户电话模糊搜索用户列表
+	 * @param phone
+	 * @return
+	 */
+	@PostMapping("/app-user/getAppUserByPhone")
+	R<List<AppUser>> getAppUserByPhone(@RequestParam("phone") String phone);
+
+
+	@PostMapping("/app-user/getAppUserByPhone1")
+	R<AppUser> getAppUserByPhone1(String phone);
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java
index a3a839d..0d93b14 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java
@@ -31,7 +31,7 @@
     @ApiModelProperty("订单id")
     private Long orderId;
 
-    @ApiModelProperty("类型:1充值2提现3红包4分佣5商城购物")
+    @ApiModelProperty("类型:1充值2提现3红包4分佣5商城购物6订单取消回退")
     private Integer changeType;
 
     @ApiModelProperty("变更前金额")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
index 6e0a0fe..ca1a03f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
@@ -104,7 +104,6 @@
     @TableField("discount_total_amount")
     private BigDecimal discountTotalAmount;
 
-
     @ApiModelProperty(value = "实际支付价格")
     @TableField("payment_amount")
     private BigDecimal paymentAmount;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderBalancePayment.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderBalancePayment.java
new file mode 100644
index 0000000..0b5b89d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderBalancePayment.java
@@ -0,0 +1,39 @@
+package com.ruoyi.order.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/13 16:41
+ */
+@Data
+@TableName("t_order_balance_payment")
+public class OrderBalancePayment {
+	/**
+	 * 主键
+	 */
+	@TableId(value = "id", type = IdType.NONE)
+	private Long id;
+	/**
+	 * 订单id
+	 */
+	@TableField("order_id")
+	private Long orderId;
+	/**
+	 * 红包支付金额
+	 */
+	@TableField("red_packet_amount")
+	private BigDecimal redPacketAmount;
+	/**
+	 * 分销金额支付金额
+	 */
+	@TableField("distribution_amount")
+	private BigDecimal distributionAmount;
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
index 0135ce7..177fa9f 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
@@ -11,5 +11,6 @@
 
     @ApiModelProperty(value = "用户名称")
     private String nickName;
+    private Integer objectId;
 
 }
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java
index b12fb31..262921f 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java
@@ -16,6 +16,10 @@
      * 用户密码
      */
     private String password;
+    /**
+     * 登录平台类型(1=平台,2=门店)
+     */
+    private Integer roleType;
 
     public String getUsername()
     {
@@ -36,4 +40,12 @@
     {
         this.password = password;
     }
+    
+    public Integer getRoleType() {
+        return roleType;
+    }
+    
+    public void setRoleType(Integer roleType) {
+        this.roleType = roleType;
+    }
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
index 14c12e1..0067210 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
@@ -9,9 +9,9 @@
 
 public class MsgUtil {
 
-    public final static String ecName= "四川明星新能源科技有限公司";
-    public final static String secretKey= "MX_xny2023?9";
-    public final static String sign= "1PUAVuY2b";
+    public final static String ecName= "";
+    public final static String secretKey= "";
+    public final static String sign= "";
 
 
 
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java
index 5092f3f..505b9c3 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.common.core.web.page;
 
+import io.swagger.annotations.ApiModel;
+
 import java.io.Serializable;
 import java.util.List;
 
@@ -8,6 +10,7 @@
  * 
  * @author ruoyi
  */
+@ApiModel
 public class TableDataInfo<T> implements Serializable
 {
     private static final long serialVersionUID = 1L;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
index 5651b84..03bb721 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.security.annotation.InnerAuth;
+import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.domain.SysDept;
 import com.ruoyi.system.api.domain.SysRole;
@@ -69,6 +70,9 @@
     @Resource
     private UserShopService userShopService;
     
+    @Resource
+    private TokenService tokenService;
+    
     
     
     
@@ -77,7 +81,7 @@
      * 获取用户列表
      */
     @GetMapping("/list")
-    @ApiOperation(value = "获取系统用户列表", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "获取系统用户列表", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     public AjaxResult list(GetSysUserList getSysUserList) {
         PageInfo<SysUser> pageInfo = new PageInfo<>(getSysUserList.getPageCurr(), getSysUserList.getPageSize());
         PageInfo<SysUser> page = userService.getList(pageInfo, getSysUserList);
@@ -88,7 +92,7 @@
      * 获取用户选择列表
      */
     @PostMapping("/getChangeUserList")
-    @ApiOperation(value = "获取用户选择列表", tags = {"管理后台-获取用户选择列表"})
+    @ApiOperation(value = "获取用户选择列表", tags = {"管理后台-获取用户选择列表", "门店后台-部门管理"})
     public AjaxResult<PageInfo<SysUser>> getChangeUserList(@RequestBody ChangeUserQuery query) {
         return AjaxResult.success(userService.getChangeUserList(query));
     }
@@ -98,9 +102,14 @@
      */
     @Log(title = "用户管理", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    @ApiOperation(value = "添加系统用户", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "添加系统用户", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     public AjaxResult add(@RequestBody SysUser user) {
         user.setUserName(user.getPhonenumber());
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser1 = userService.getById(userid);
+        if(sysUser1.getRoleType() == 2){
+            user.setObjectId(sysUser1.getObjectId());
+        }
         if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){
             user.setNickName(user.getPhonenumber());
         }
@@ -141,7 +150,7 @@
     /**
      * 根据用户编号获取详细信息
      */
-    @ApiOperation(value = "获取用户详情", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "获取用户详情", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     @GetMapping("/getInfo/{userId}")
     public AjaxResult getInfo(@PathVariable Long userId) {
         userService.checkUserDataScope(userId);
@@ -164,7 +173,7 @@
      */
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PutMapping("/update")
-    @ApiOperation(value = "编辑系统用户", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "编辑系统用户", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     public AjaxResult edit(@Validated @RequestBody SysUser user) {
         user.setUserName(user.getPhonenumber());
         if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){
@@ -214,7 +223,7 @@
      */
     @Log(title = "用户管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{userIds}")
-    @ApiOperation(value = "删除系统用户", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "删除系统用户", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     public AjaxResult remove(@PathVariable Long[] userIds) {
         if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) {
             return error("当前用户不能删除");
@@ -226,7 +235,7 @@
 
 
     @PostMapping("/shopUserStart")
-    @ApiOperation(value = "账号管理--禁用/启用", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "账号管理--禁用/启用", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     public AjaxResult shopUserStart(@RequestBody ShopUserStart shopUserStart) {
         if (shopUserStart.getUserId() == null) {
             return AjaxResult.error("userId不能为空");
@@ -352,7 +361,7 @@
      */
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PutMapping("/resetPwd")
-    @ApiOperation(value = "重置密码", tags = {"管理后台-账号管理"})
+    @ApiOperation(value = "重置密码", tags = {"管理后台-账号管理", "门店后台-部门管理"})
     public AjaxResult resetPwd(@RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/GetSysUserList.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/GetSysUserList.java
index 05c7100..58f136f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/GetSysUserList.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/GetSysUserList.java
@@ -22,4 +22,5 @@
 	private List<Integer> roleIds;
 	@ApiModelProperty(value = "账户状态(0=正常,1=禁用)")
 	private Integer status;
+	private Integer objectId;
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 08b41c6..5909863 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -509,6 +509,11 @@
 	
 	@Override
 	public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, GetSysUserList getSysUserList) {
+		Long userid = tokenService.getLoginUser().getUserid();
+		SysUser sysUser1 = this.getById(userid);
+		if(sysUser1.getRoleType() == 2){
+			getSysUserList.setObjectId(sysUser1.getObjectId());
+		}
 		List<SysUser> list = this.baseMapper.getList(pageInfo, getSysUserList);
 		for (SysUser sysUser : list) {
 			List<SysUserRole> list1 = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, sysUser.getUserId()));
@@ -541,6 +546,11 @@
 	
 	@Override
 	public PageInfo<SysUser> getChangeUserList(ChangeUserQuery query) {
+		Long userid = tokenService.getLoginUser().getUserid();
+		SysUser sysUser1 = this.getById(userid);
+		if(sysUser1.getRoleType() == 2){
+			query.setObjectId(sysUser1.getObjectId());
+		}
 		PageInfo<SysUser> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
 		List<SysUser> list = this.baseMapper.getChangeUserList(pageInfo, query);
 		return pageInfo.setRecords(list);
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysUserMapper.xml
index 74e1f8c..a6316a3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysUserMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysUserMapper.xml
@@ -113,11 +113,19 @@
 	</select>
 	
 	<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
-		select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
+		select user_id, user_name from sys_user where user_name = #{userName}
+		<if test="null != objectId">
+			and objectId = #{objectId}
+		</if>
+		and del_flag = '0' limit 1
 	</select>
 	
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
-		select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
+		select user_id, phonenumber from sys_user where phonenumber = #{phonenumber}
+		<if test="null != objectId">
+			and objectId = #{objectId}
+		</if>
+		and del_flag = '0' limit 1
 	</select>
 	
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
@@ -141,6 +149,9 @@
 	    </if>
 		<if test="null != req.status">
 			and status = #{req.status}
+		</if>
+		<if test="null != req.objectId">
+			and objectId = #{req.objectId}
 		</if>
 		and del_flag = '0' and role_type =1
 		order by create_time desc
@@ -168,6 +179,9 @@
 			<if test="query.nickName != null and query.nickName != ''">
 				AND nick_name LIKE concat('%',#{query.nickName},'%')
 			</if>
+			<if test="null != query.objectId">
+				and objectId = #{query.objectId}
+			</if>
 			AND del_flag = '0'
 			AND role_type = 1
 		</where>
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
index e730402..315b847 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -1,6 +1,15 @@
 package com.ruoyi.account.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.api.model.UserCancellationLog;
+import com.ruoyi.account.api.model.UserCoupon;
+import com.ruoyi.account.api.model.UserSignRecord;
+import com.ruoyi.account.service.AppUserService;
+import com.ruoyi.account.service.UserCancellationLogService;
+import com.ruoyi.account.service.UserCouponService;
+import com.ruoyi.account.service.UserSignRecordService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.model.*;
@@ -73,6 +82,10 @@
 	public R<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
 		return appUserService.mobileLogin(mobileLogin);
 	}
+
+
+
+
 
 
 	@ResponseBody
@@ -348,6 +361,34 @@
 		appUserService.onlineRecord();
 		return R.ok();
 	}
+	
+	
+	
+	
+	
+	/**
+	 * 根据用户名称模糊搜索用户列表
+	 * @param name
+	 * @return
+	 */
+	@PostMapping("/getAppUserByName")
+	public R<List<AppUser>> getAppUserByName(@RequestParam("name") String name){
+		List<AppUser> list = appUserService.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1)
+				.like(AppUser::getName, name));
+		return R.ok(list);
+	}
+	
+	/**
+	 * 根据用户电话模糊搜索用户列表
+	 * @param phone
+	 * @return
+	 */
+	@PostMapping("/getAppUserByPhone")
+	public R<List<AppUser>> getAppUserByPhone(@RequestParam("phone") String phone){
+		List<AppUser> list = appUserService.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1)
+				.like(AppUser::getPhone, phone));
+		return R.ok(list);
+	}
 
 	/**
 	 * 获取用户列表
@@ -473,18 +514,21 @@
 
 
 
-	@GetMapping("/getAppUserByPhone")
-	public R<AppUser> getAppUserByPhone(String phone){
-		AppUser appUser = appUserService.lambdaQuery().eq(AppUser::getPhone, phone).one();
-		return R.ok(appUser);
-	}
-
 
 	@GetMapping("/listByIds")
 	List<AppUser> listByIds(@RequestParam("ids") List<Long> ids){
 		List<AppUser> appUsers = appUserService.listByIds(ids);
 		return appUsers;
 	}
+	
+	
+	
+	@PostMapping("/getAppUserByPhone1")
+	public R<AppUser> getAppUserByPhone1(@RequestParam("phone") String phone){
+		AppUser appUser = appUserService.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1)
+				.eq(AppUser::getPhone, phone));
+		return R.ok(appUser);
+	}
 
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
index c0c4d88..3428da9 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -14,7 +14,9 @@
 import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.account.api.vo.PaymentUserCoupon;
 import com.ruoyi.other.api.domain.Goods;
+import com.ruoyi.other.api.domain.PointSetting;
 import com.ruoyi.other.api.feignClient.GoodsClient;
+import com.ruoyi.other.api.feignClient.PointSettingClient;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -54,6 +56,9 @@
     private UserPointService userPointService;
     @Resource
     private GoodsClient goodsClient;
+    
+    @Resource
+    private PointSettingClient pointSettingClient;
 
 
 
@@ -131,16 +136,20 @@
         }
         //如果是积分兑换,增加积分的历史记录
         if (data.getSendType()!=1){
+            int point = data.getNeedPoint().intValue();
+            Integer lavePoint = byId.getLavePoint();
+            //扣除积分
+            byId.setLavePoint(byId.getLavePoint() - point);
+            appUserService.updateById(byId);
+            
             UserPoint userPoint = new UserPoint();
             userPoint.setType(4);
-            userPoint.setHistoricalPoint(byId.getLavePoint());
-            userPoint.setVariablePoint(data.getNeedPoint().intValue());
+            userPoint.setHistoricalPoint(lavePoint);
+            userPoint.setVariablePoint(point);
+            userPoint.setBalance(byId.getLavePoint());
             userPoint.setAppUserId(userid);
             userPoint.setObjectId(Long.valueOf(data.getId()));
             userPointService.save(userPoint);
-            //扣除积分
-            byId.setLavePoint(byId.getLavePoint() - userPoint.getVariablePoint());
-            appUserService.updateById(byId);
         }
         //增加优惠券记录,根据时间类型设置开始结束时间
         UserCoupon userCoupon = new UserCoupon();
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
index 64a32a1..a58ae1f 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -306,8 +306,14 @@
 			if (pointSetting == null){
 				throw new RuntimeException("积分设置不存在");
 			}
-			appUser.setLavePoint(pointSetting.getGetRegisPoint());
-			appUser.setTotalPoint(0);
+			Integer getRegisPoint = pointSetting.getGetRegisPoint();
+			Integer getRegisPoint1 = getRegisPoint;
+			//计算可用积分比例
+			if(1 == pointSetting.getGetRegisPointOpen()){
+				getRegisPoint1 = getRegisPoint1 * (100 - pointSetting.getGetRegisPoint());
+			}
+			appUser.setLavePoint(getRegisPoint1);
+			appUser.setTotalPoint(getRegisPoint);
 			//根据平台的配置未达标,则标注为可修改推广人
 			appUser.setChangePromoter(0);
 			appUser.setLongitude(registerAccount.getLongitude());
@@ -320,6 +326,18 @@
 //			appUser.setDistrict();
 //			appUser.setDistrictCode();
 			this.save(appUser);
+			//增加积分变动记录
+			if(getRegisPoint1 > 0){
+				//构建积分流水记录
+				UserPoint userPoint = new UserPoint();
+				userPoint.setType(10);
+				userPoint.setHistoricalPoint(0);
+				userPoint.setVariablePoint(getRegisPoint1);
+				userPoint.setBalance(appUser.getLavePoint());
+				userPoint.setCreateTime(LocalDateTime.now());
+				userPoint.setAppUserId(appUser.getId());
+				userPointService.save(userPoint);
+			}
 			//获取微信推广二维码
 			String fileName = UUID.randomUUID() + ".jpg";
 			weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.DEVELOP, filePath + fileName);
@@ -376,6 +394,28 @@
 	 */
 	public void vipUpgrade(Long id){
 		AppUser appUser = this.getById(id);
+		Integer lavePoint = appUser.getLavePoint();
+		//计算积分
+		PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+		Integer newPoint = pointSetting.getNewPoint();
+		Integer newPoint1 = newPoint;
+		if(null != pointSetting && 1 == pointSetting.getGetNewPointOpen()){
+			newPoint1 = newPoint1 * (100 - pointSetting.getGetNewPoint());
+		}
+		appUser.setLavePoint(appUser.getLavePoint() + newPoint1);
+		appUser.setTotalPoint(appUser.getTotalPoint() + newPoint);
+		//记录积分变动
+		if(newPoint1 > 0){
+			//构建积分流水记录
+			UserPoint userPoint = new UserPoint();
+			userPoint.setType(3);
+			userPoint.setHistoricalPoint(lavePoint);
+			userPoint.setVariablePoint(newPoint1);
+			userPoint.setBalance(appUser.getLavePoint());
+			userPoint.setCreateTime(LocalDateTime.now());
+			userPoint.setAppUserId(appUser.getId());
+			userPointService.save(userPoint);
+		}
 		Integer vipId = appUser.getVipId();
 		//钻石会员
 		VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData();
@@ -592,9 +632,13 @@
 				PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
 				if(null != pointSetting){
 					int hourPoint = pointSetting.getHourPoint().intValue();
+					int hourPoint1 = hourPoint;
+					if(1 == pointSetting.getWorkPointOpen()){
+						hourPoint1 = hourPoint1 * (100 - pointSetting.getWorkPoint());
+					}
 					Integer lavePoint = appUser.getLavePoint();
 					appUser.setTotalPoint(appUser.getTotalPoint() + hourPoint);
-					appUser.setLavePoint(appUser.getLavePoint() + hourPoint);
+					appUser.setLavePoint(appUser.getLavePoint() + hourPoint1);
 					this.updateById(appUser);
 					//添加积分变动记录
 					UserPoint userPoint = new UserPoint();
diff --git a/ruoyi-service/ruoyi-order/pom.xml b/ruoyi-service/ruoyi-order/pom.xml
index 788f0f9..b0095a7 100644
--- a/ruoyi-service/ruoyi-order/pom.xml
+++ b/ruoyi-service/ruoyi-order/pom.xml
@@ -150,6 +150,12 @@
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
         </dependency>
+    
+        <dependency>
+            <groupId>com.github.kuaidi100-api</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0.11</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
index 05397e6..1f95358 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -14,8 +14,7 @@
 import com.ruoyi.order.model.Order;
 import com.ruoyi.order.service.CommissionService;
 import com.ruoyi.order.service.OrderService;
-import com.ruoyi.order.vo.OrderDetailVO;
-import com.ruoyi.order.vo.OrderVO;
+import com.ruoyi.order.vo.*;
 import com.ruoyi.other.api.domain.BaseSetting;
 import com.ruoyi.other.api.feignClient.BaseSettingClient;
 import com.ruoyi.system.api.model.LoginUser;
@@ -213,5 +212,50 @@
     }
 
 
+    
+    
+    @ResponseBody
+    @GetMapping("/getOrderPageList")
+    @ApiOperation(value = "获取订单列表", tags = {"管理后台-订单管理", "门店后台-订单管理"})
+    public TableDataInfo<OrderPageListVo> getOrderPageList(OrderPageList orderPageList){
+        startPage();
+        List<OrderPageListVo> list = orderService.getOrderPageList(orderPageList);
+        return getDataTable(list);
+    }
+    
+    
+    @ResponseBody
+    @PutMapping("/confirmDelivery/{orderId}")
+    @ApiOperation(value = "已发货操作", tags = {"管理后台-订单管理"})
+    public R confirmDelivery(@PathVariable("orderId") String orderId, String code){
+        return orderService.confirmDelivery(orderId, code);
+    }
+    
+    
+    @ResponseBody
+    @PutMapping("/cancelOrder/{orderId}")
+    @ApiOperation(value = "取消订单操作", tags = {"管理后台-订单管理"})
+    public R cancelOrder(@PathVariable("orderId") Long orderId){
+        return orderService.cancelOrder(orderId);
+    }
+    
+    @ResponseBody
+    @PutMapping("/receivingOperation/{orderId}")
+    @ApiOperation(value = "收货操作", tags = {"管理后台-订单管理"})
+    public R receivingOperation(@PathVariable("orderId") Long orderId){
+        return orderService.receivingOperation(orderId);
+    }
+    
+    
+    @ResponseBody
+    @GetMapping("/getOrderInfo/{orderId}")
+    @ApiOperation(value = "查询订单详情", tags = {"管理后台-订单管理"})
+    public R<OrderInfoVo> getOrderInfo(@PathVariable("orderId") Long orderId){
+        OrderInfoVo orderInfo = orderService.getOrderInfo(orderId);
+        return R.ok(orderInfo);
+    }
+    
+    
+    
 }
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderBalancePaymentMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderBalancePaymentMapper.java
new file mode 100644
index 0000000..c0f2b59
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderBalancePaymentMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.model.OrderBalancePayment;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/13 16:44
+ */
+public interface OrderBalancePaymentMapper extends BaseMapper<OrderBalancePayment> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
index eae8c99..44414e8 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -1,6 +1,8 @@
 package com.ruoyi.order.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.vo.OrderPageList;
+import com.ruoyi.order.vo.OrderPageListVo;
 import com.ruoyi.order.vo.OrderVO;
 import com.ruoyi.order.model.Order;
 import org.apache.ibatis.annotations.Param;
@@ -20,4 +22,12 @@
      * 查询用户id
      */
     List<OrderVO> selectOrderListByUserId(@Param("status") Integer status, @Param("userId") Long userId);
+    
+    
+    /**
+     * 管理后台获取订单列表数据
+     * @param orderPageList
+     * @return
+     */
+    List<OrderPageListVo> getOrderPageList(@Param("item") OrderPageList orderPageList);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderBalancePaymentService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderBalancePaymentService.java
new file mode 100644
index 0000000..f8be0d0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderBalancePaymentService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.model.OrderBalancePayment;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/13 16:43
+ */
+public interface OrderBalancePaymentService extends IService<OrderBalancePayment> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
index d710205..4ee3d67 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
@@ -1,9 +1,10 @@
 package com.ruoyi.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.model.Order;
-import com.ruoyi.order.vo.OrderDetailVO;
-import com.ruoyi.order.vo.OrderVO;
+import com.ruoyi.order.vo.*;
+import org.springframework.web.bind.annotation.PathVariable;
 
 import java.util.List;
 
@@ -23,5 +24,45 @@
     boolean check(Order order, Integer shopId, Long userId);
 
     void writeOff(String code,Integer shopId);
-
+    
+    
+    /**
+     * 获取管理后台订单列表数据
+     * @param orderPageList
+     * @return
+     */
+    List<OrderPageListVo> getOrderPageList(OrderPageList orderPageList);
+    
+    
+    /**
+     * 确认发货操作
+     * @param orderId
+     * @param code
+     * @return
+     */
+    R confirmDelivery(String orderId, String code);
+    
+    
+    /**
+     * 取消订单操作
+     * @param orderId
+     * @return
+     */
+    R cancelOrder(Long orderId);
+    
+    
+    /**
+     * 收货操作
+     * @param orderId
+     * @return
+     */
+    R receivingOperation(Long orderId);
+    
+    
+    /**
+     * 获取订单详情
+     * @param orderId
+     * @return
+     */
+    OrderInfoVo getOrderInfo(Long orderId);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderBalancePaymentServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderBalancePaymentServiceImpl.java
new file mode 100644
index 0000000..a99b9d2
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderBalancePaymentServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.mapper.OrderBalancePaymentMapper;
+import com.ruoyi.order.model.OrderBalancePayment;
+import com.ruoyi.order.service.OrderBalancePaymentService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/13 16:43
+ */
+@Service
+public class OrderBalancePaymentServiceImpl extends ServiceImpl<OrderBalancePaymentMapper, OrderBalancePayment> implements OrderBalancePaymentService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 433629f..ac220ed 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,12 +1,14 @@
 package com.ruoyi.order.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.feignClient.AppUserClient;
-import com.ruoyi.account.api.model.AppUserShop;
-import com.ruoyi.account.api.model.UserAddress;
+import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient;
+import com.ruoyi.account.api.feignClient.UserPointClient;
+import com.ruoyi.account.api.model.*;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -15,24 +17,28 @@
 import com.ruoyi.order.mapper.OrderGoodMapper;
 import com.ruoyi.order.mapper.OrderMapper;
 import com.ruoyi.order.model.Order;
+import com.ruoyi.order.model.OrderBalancePayment;
 import com.ruoyi.order.model.OrderGood;
 import com.ruoyi.order.service.CommissionService;
+import com.ruoyi.order.service.OrderBalancePaymentService;
 import com.ruoyi.order.service.OrderService;
-import com.ruoyi.order.vo.OrderDetailVO;
-import com.ruoyi.order.vo.OrderGoodsVO;
-import com.ruoyi.order.vo.OrderVO;
+import com.ruoyi.order.util.ExpressDeliveryUtil;
+import com.ruoyi.order.util.vo.QueryKD100Vo;
+import com.ruoyi.order.vo.*;
 import com.ruoyi.other.api.domain.*;
-import com.ruoyi.other.api.feignClient.BaseSettingClient;
-import com.ruoyi.other.api.feignClient.ShopClient;
-import com.ruoyi.other.api.feignClient.TechnicianClient;
+import com.ruoyi.other.api.feignClient.*;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
 import com.ruoyi.system.api.model.LoginUser;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -61,6 +67,29 @@
     private CommissionService commissionService;
     @Resource
     private BaseSettingClient baseSettingClient;
+    
+    @Resource
+    private SysUserClient sysUserClient;
+    
+    @Resource
+    private BalanceChangeRecordClient balanceChangeRecordClient;
+    
+    @Resource
+    private UserPointClient userPointClient;
+    
+    @Resource
+    private PointSettingClient pointSettingClient;
+    
+    @Resource
+    private OrderBalancePaymentService orderBalancePaymentService;
+    
+    @Resource
+    private VipSettingClient vipSettingClient;
+    
+    @Resource
+    private GoodsClient goodsClient;
+    
+    
 
 
     @Override
@@ -223,4 +252,277 @@
         Long days = jsonObject.getLong("days");
         commissionService.addToCommissionDelayQueue(order.getId(), LocalDateTime.now().plusDays(days));
     }
+    
+    
+    /**
+     * 管理后台获取订单列表数据
+     * @param orderPageList
+     * @return
+     */
+    @Override
+    public List<OrderPageListVo> getOrderPageList(OrderPageList orderPageList) {
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
+        if(2 == sysUser.getRoleType()){
+            orderPageList.setShopId(sysUser.getObjectId());
+        }
+        //搜索条件,用户姓名
+        if(StringUtils.isNotEmpty(orderPageList.getUserName())){
+            List<AppUser> data = appUserClient.getAppUserByName(orderPageList.getUserName()).getData();
+            List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList());
+            if(null != orderPageList.getAppUserIds()){
+                List<Long> appUserIds = orderPageList.getAppUserIds();
+                appUserIds.addAll(collect);
+                orderPageList.setAppUserIds(appUserIds);
+            }else{
+                orderPageList.setAppUserIds(collect);
+            }
+        }
+        //搜索条件,用户电话
+        if(StringUtils.isNotEmpty(orderPageList.getPhone())){
+            List<AppUser> data = appUserClient.getAppUserByPhone(orderPageList.getPhone()).getData();
+            List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList());
+            if(null != orderPageList.getAppUserIds()){
+                List<Long> appUserIds = orderPageList.getAppUserIds();
+                appUserIds.addAll(collect);
+                orderPageList.setAppUserIds(appUserIds);
+            }else{
+                orderPageList.setAppUserIds(collect);
+            }
+        }
+        
+        List<OrderPageListVo> list = this.baseMapper.getOrderPageList(orderPageList);
+        for (OrderPageListVo orderPageListVo : list) {
+            Long appUserId = orderPageListVo.getAppUserId();
+            AppUser appUser = appUserClient.getAppUserById(appUserId);
+            orderPageListVo.setUserName(appUser.getName());
+            orderPageListVo.setPhone(appUser.getPhone());
+        }
+        return list;
+    }
+    
+    
+    /**
+     * 确认发货操作
+     * @param orderId
+     * @param code
+     * @return
+     */
+    @Override
+    public R confirmDelivery(String orderId, String code) {
+        Order order = this.getById(orderId);
+        if(1 == order.getPayStatus()){
+            return R.fail("订单还未完成支付");
+        }
+        if(1 == order.getOrderType() || null == order.getAddressJson()){
+            return R.fail("该订单不支付快递配送");
+        }
+        if(1 != order.getOrderStatus()){
+            return R.fail("无效的操作");
+        }
+        //添加快递号和修改订单状态
+        order.setExpressJson(code);
+        order.setOrderStatus(2);
+        this.updateById(order);
+        return R.ok();
+    }
+    
+    
+    /**
+     * 取消订单操作
+     * @param orderId
+     * @return
+     */
+    @Override
+    public R cancelOrder(Long orderId) {
+        Order order = this.getById(orderId);
+        if(Arrays.asList(4, 5, 6, 7, 8).contains(order.getOrderStatus())){
+            return R.fail("无效的操作");
+        }
+        order.setOrderStatus(5);
+        this.updateById(order);
+        //开始退款
+        Integer payMethod = order.getPayMethod();
+        BigDecimal paymentAmount = order.getPaymentAmount();
+        AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
+        if(1 == payMethod){
+            //微信退款
+        }
+        if(2 == payMethod){
+            //余额退款
+            OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, orderId));
+            BigDecimal balance = appUser.getBalance();
+            appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN));
+            appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN));
+            appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
+            appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
+            
+            //构建账户余额流水明细
+            BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
+            balanceChangeRecord.setOrderId(orderId);
+            balanceChangeRecord.setAppUserId(order.getAppUserId());
+            balanceChangeRecord.setChangeType(6);
+            balanceChangeRecord.setBeforeAmount(balance);
+            balanceChangeRecord.setChangeAmount(paymentAmount);
+            balanceChangeRecord.setAfterAmount(appUser.getBalance());
+            balanceChangeRecord.setDelFlag(0);
+            balanceChangeRecord.setCreateTime(LocalDateTime.now());
+            balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
+        }
+        Integer lavePoint = appUser.getLavePoint();
+        if(3 == payMethod){
+            //积分退款
+            appUser.setLavePoint(appUser.getLavePoint() + order.getPoint());
+    
+            //开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款
+            if(null != order.getExpressAmount() && BigDecimal.ZERO.compareTo(order.getExpressAmount()) < 0){
+                BigDecimal expressAmount = order.getExpressAmount();
+                if(1 == order.getExpressPayMethod()){
+                    //微信退款
+                }
+                if(2 == order.getExpressPayMethod()){
+                    //余额退款
+                    OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, orderId));
+                    BigDecimal balance = appUser.getBalance();
+                    appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN));
+                    appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN));
+                    appUser.setBalance(balance.add(expressAmount).setScale(2, RoundingMode.HALF_EVEN));
+                    //构建账户余额流水明细
+                    BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
+                    balanceChangeRecord.setOrderId(orderId);
+                    balanceChangeRecord.setAppUserId(order.getAppUserId());
+                    balanceChangeRecord.setChangeType(6);
+                    balanceChangeRecord.setBeforeAmount(balance);
+                    balanceChangeRecord.setChangeAmount(expressAmount);
+                    balanceChangeRecord.setAfterAmount(appUser.getBalance());
+                    balanceChangeRecord.setDelFlag(0);
+                    balanceChangeRecord.setCreateTime(LocalDateTime.now());
+                    balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
+                }
+            }
+        }
+        //退回获得的消费积分
+        //需要先检查会员等级时候回回退,使用回退后的会员等级查询配置
+        Integer getPoint = order.getGetPoint();
+        boolean vipDemotion = vipDemotion(appUser.getShopPoint() - getPoint, appUser.getVipId());
+        PointSetting pointSetting = pointSettingClient.getPointSetting(vipDemotion ? appUser.getVipId() - 1 : appUser.getVipId()).getData();
+        int earnPoint1 = getPoint;
+        if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+            earnPoint1 = getPoint / (100 - pointSetting.getBuyPoint());
+        }
+        appUser.setLavePoint(lavePoint - getPoint);
+        appUser.setShopPoint(appUser.getShopPoint() - earnPoint1);
+        appUser.setTotalPoint(appUser.getTotalPoint() - earnPoint1);
+        if(vipDemotion){
+            appUser.setVipId(appUser.getVipId() - 1);
+        }
+        //构建积分流水明细
+        UserPoint userPoint = new UserPoint();
+        userPoint.setType(11);
+        userPoint.setHistoricalPoint(lavePoint);
+        Integer point = appUser.getLavePoint() - lavePoint;
+        userPoint.setVariablePoint(point >= 0 ? point : point * -1);
+        userPoint.setBalance(appUser.getLavePoint());
+        userPoint.setCreateTime(LocalDateTime.now());
+        userPoint.setAppUserId(order.getAppUserId());
+        userPoint.setObjectId(orderId);
+        userPointClient.saveUserPoint(userPoint);
+        appUserClient.editAppUserById(appUser);
+        return R.ok();
+    }
+    
+    
+    
+    /**
+     * 会员降级检测
+     */
+    public boolean vipDemotion(Integer shopPoint, Integer vipId){
+        if(vipId == 1 || vipId > 3){
+            return false;
+        }
+        VipSetting vipSetting = vipSettingClient.getVipSetting(vipId).getData();
+        Integer vipLevelUpShopRole = vipSetting.getVipLevelUpShopRole();
+        Integer vipLevelUpShop = vipSetting.getVipLevelUpShop();
+        if(1 == vipLevelUpShopRole && shopPoint < vipLevelUpShop){
+            return true;
+        }
+        return false;
+    }
+    
+    
+    /**
+     * 收货操作
+     * @param orderId
+     * @return
+     */
+    @Override
+    public R receivingOperation(Long orderId) {
+        Order order = this.getById(orderId);
+        if(order.getOrderStatus() != 2){
+            return R.fail("无效的操作");
+        }
+        order.setOrderStatus(4);
+        this.updateById(order);
+        return R.ok();
+    }
+    
+    
+    /**
+     * 获取订单详情
+     * @param orderId
+     * @return
+     */
+    @Override
+    public OrderInfoVo getOrderInfo(Long orderId) {
+        Order order = this.getById(orderId);
+        OrderInfoVo orderInfo = new OrderInfoVo();
+        orderInfo.setId(orderId.toString());
+        orderInfo.setOrderNumber(order.getOrderNumber());
+        orderInfo.setOrderStatus(order.getOrderStatus());
+        orderInfo.setCreateTime(order.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
+        orderInfo.setUserName(appUser.getName());
+        orderInfo.setPhone(appUser.getPhone());
+        orderInfo.setOrderType(order.getOrderType() == 1 ? "服务" : (StringUtils.isNotEmpty(order.getExpressJson()) ? "单品-快递配送" : "单品-自提"));
+        Shop shop = shopClient.getShopById(order.getShopId()).getData();
+        if(null != shop){
+            orderInfo.setShopName(shop.getName());
+        }
+        orderInfo.setPaymentMethod(order.getPayMethod());
+        orderInfo.setTotalAmount(order.getTotalAmount());
+        if(StringUtils.isNotEmpty(order.getCouponJson())){
+            CouponInfo couponInfo = JSON.parseObject(order.getCouponJson(), CouponInfo.class);
+            orderInfo.setCouponName(couponInfo.getCouponName());
+        }
+        orderInfo.setDiscountAmount(order.getDiscountTotalAmount());
+        orderInfo.setExpressAmount(order.getExpressAmount());
+        orderInfo.setPaymentAmount(order.getPaymentAmount());
+        orderInfo.setPoint(order.getGetPoint());
+        if(StringUtils.isNotEmpty(order.getAddressJson())){
+            UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class);
+            orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone());
+            orderInfo.setAddress(userAddress.getRecieveAddress());
+        }
+        if(StringUtils.isNotEmpty(order.getExpressJson())){
+            JSONObject jsonObject = JSON.parseObject(order.getExpressJson());
+            String com = jsonObject.getString("com");
+            String num = jsonObject.getString("num");
+            QueryKD100Vo queryKD100Vo = ExpressDeliveryUtil.kd100QueryTrack(com, num);
+            orderInfo.setExpress(queryKD100Vo);
+        }
+        List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0));
+        int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum();
+        orderInfo.setGoodsNum(sum);
+        List<Object> goodsJson = new ArrayList<>();
+        for (OrderGood orderGood : orderGoods) {
+            Goods goods = JSON.parseObject(orderGood.getGoodJson(), Goods.class);
+            Map<String, Object> map = new HashMap<>();
+            map.put("name", goods.getName());
+            map.put("imgUrl", goods.getHomePagePicture());
+            map.put("number", orderGood.getNum());
+            goodsJson.add(map);
+        }
+        orderInfo.setGoodsJson(JSON.toJSONString(goodsJson));
+        return orderInfo;
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 94fdcd3..9519d05 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -15,12 +15,10 @@
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.order.mapper.ShoppingCartMapper;
 import com.ruoyi.order.model.Order;
+import com.ruoyi.order.model.OrderBalancePayment;
 import com.ruoyi.order.model.OrderGood;
 import com.ruoyi.order.model.ShoppingCart;
-import com.ruoyi.order.service.CommissionService;
-import com.ruoyi.order.service.OrderGoodService;
-import com.ruoyi.order.service.OrderService;
-import com.ruoyi.order.service.ShoppingCartService;
+import com.ruoyi.order.service.*;
 import com.ruoyi.order.vo.*;
 import com.ruoyi.other.api.domain.*;
 import com.ruoyi.other.api.feignClient.*;
@@ -108,6 +106,18 @@
 
 
 
+	
+	@Resource
+	private PointSettingClient pointSettingClient;
+	
+	@Resource
+	private OrderBalancePaymentService orderBalancePaymentService;
+	
+	
+	
+	
+	
+	
 	/**
 	 * 获取购物车列表
 	 * @param type
@@ -854,17 +864,22 @@
 
 		}
 		//账户余额
+		BigDecimal redPacketAmount = BigDecimal.ZERO;
+		BigDecimal distributionAmount = BigDecimal.ZERO;
 		if(2 == shoppingCartPayment.getPaymentType()){
 			BigDecimal totalRedPacketAmount = appUser.getTotalRedPacketAmount();
 			BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount();
 			BigDecimal balance = appUser.getBalance();
+			//红包金额满足支付
 			if(paymentMoney.compareTo(totalRedPacketAmount) <= 0){
 				totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney);
 				balance = balance.subtract(paymentMoney);
 				appUser.setTotalRedPacketAmount(totalRedPacketAmount);
 				appUser.setBalance(balance);
+				redPacketAmount = paymentMoney;
 			}else{
 				paymentMoney = paymentMoney.subtract(totalRedPacketAmount);
+				redPacketAmount = totalRedPacketAmount;
 				totalRedPacketAmount = BigDecimal.ZERO;
 				if(paymentMoney.compareTo(totalDistributionAmount) <= 0){
 					totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney);
@@ -872,6 +887,7 @@
 					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
 					appUser.setTotalDistributionAmount(totalDistributionAmount);
 					appUser.setBalance(balance);
+					distributionAmount = paymentMoney;
 				}else{
 					paymentMoney = paymentMoney.subtract(totalDistributionAmount);
 					totalDistributionAmount = BigDecimal.ZERO;
@@ -879,17 +895,23 @@
 					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
 					appUser.setTotalDistributionAmount(totalDistributionAmount);
 					appUser.setBalance(balance);
+					distributionAmount = totalDistributionAmount;
 				}
 			}
 			//构建积分流水记录
 			if(earnPoint > 0){
+				PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+				int earnPoint1 = earnPoint;
+				if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+					earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint());
+				}
 				appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
-				appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+				appUser.setLavePoint(appUser.getLavePoint() + earnPoint1);
 				appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
 
 				UserPoint userPoint = new UserPoint();
 				userPoint.setType(1);
-				userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
+				userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint1);
 				userPoint.setVariablePoint(earnPoint);
 				userPoint.setBalance(appUser.getLavePoint());
 				userPoint.setCreateTime(LocalDateTime.now());
@@ -925,11 +947,16 @@
 		//积分支付
 		if(3 == shoppingCartPayment.getPaymentType()){
 			Integer lavePoint = appUser.getLavePoint();
-			appUser.setLavePoint(lavePoint - orderPoint);
+			PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+			int earnPoint1 = earnPoint;
+			//计算可用积分比例
+			if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+				earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint());
+			}
+			appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
 			appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
-			appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+			appUser.setLavePoint(appUser.getLavePoint() + earnPoint1);
 			appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
-			appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
 			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
 			//检查消费积分满足后升级会员
@@ -937,25 +964,15 @@
 
 			//构建积分流水记录
 			UserPoint userPoint = new UserPoint();
-			userPoint.setType(4);
+			userPoint.setType(1);
 			userPoint.setHistoricalPoint(lavePoint);
-			userPoint.setVariablePoint(orderPoint);
+			Integer point = appUser.getLavePoint() - lavePoint;
+			userPoint.setVariablePoint(point >= 0 ? point : point * -1);
 			userPoint.setBalance(appUser.getLavePoint());
 			userPoint.setCreateTime(LocalDateTime.now());
 			userPoint.setAppUserId(appUser.getId());
 			userPoint.setObjectId(order.getId());
 			userPointClient.saveUserPoint(userPoint);
-			if(earnPoint > 0){
-				userPoint = new UserPoint();
-				userPoint.setType(1);
-				userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
-				userPoint.setVariablePoint(earnPoint);
-				userPoint.setBalance(appUser.getLavePoint());
-				userPoint.setCreateTime(LocalDateTime.now());
-				userPoint.setAppUserId(appUser.getId());
-				userPoint.setObjectId(order.getId());
-				userPointClient.saveUserPoint(userPoint);
-			}
 			//如果有运费,需要先扣除账户积分,再进行支付。支付成功后修改订单状态,未支付成功则回退积分,删除的订单
 			if(expressFee.compareTo(BigDecimal.ZERO) > 0){
 				if(shoppingCartPayment.getFreightPaymentType() == 1){
@@ -970,8 +987,10 @@
 						balance = balance.subtract(expressFee);
 						appUser.setTotalRedPacketAmount(totalRedPacketAmount);
 						appUser.setBalance(balance);
+						redPacketAmount = expressFee;
 					}else{
 						expressFee = expressFee.subtract(totalRedPacketAmount);
+						redPacketAmount = totalRedPacketAmount;
 						totalRedPacketAmount = BigDecimal.ZERO;
 						if(expressFee.compareTo(totalDistributionAmount) <= 0){
 							totalDistributionAmount = totalDistributionAmount.subtract(expressFee);
@@ -979,6 +998,7 @@
 							appUser.setTotalRedPacketAmount(totalRedPacketAmount);
 							appUser.setTotalDistributionAmount(totalDistributionAmount);
 							appUser.setBalance(balance);
+							distributionAmount = expressFee;
 						}else{
 							expressFee = expressFee.subtract(totalDistributionAmount);
 							totalDistributionAmount = BigDecimal.ZERO;
@@ -986,6 +1006,7 @@
 							appUser.setTotalRedPacketAmount(totalRedPacketAmount);
 							appUser.setTotalDistributionAmount(totalDistributionAmount);
 							appUser.setBalance(balance);
+							distributionAmount = totalDistributionAmount;
 						}
 					}
 
@@ -1021,6 +1042,14 @@
 				this.removeBatchByIds(ids);
 			}
 		}
+		//添加账户余额支付明细
+		if(redPacketAmount.compareTo(BigDecimal.ZERO) > 0 || distributionAmount.compareTo(BigDecimal.ZERO) > 0){
+			OrderBalancePayment orderBalancePayment = new OrderBalancePayment();
+			orderBalancePayment.setOrderId(order.getId());
+			orderBalancePayment.setRedPacketAmount(redPacketAmount);
+			orderBalancePayment.setDistributionAmount(distributionAmount);
+			orderBalancePaymentService.save(orderBalancePayment);
+		}
 		return R.ok(order.getId().toString());
 	}
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/ExpressDeliveryUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/ExpressDeliveryUtil.java
new file mode 100644
index 0000000..050d860
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/ExpressDeliveryUtil.java
@@ -0,0 +1,101 @@
+package com.ruoyi.order.util;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.api.QueryTrack;
+import com.kuaidi100.sdk.api.QueryTrackMap;
+import com.kuaidi100.sdk.contant.CompanyConstant;
+import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.pojo.HttpResult;
+import com.kuaidi100.sdk.request.QueryTrackParam;
+import com.kuaidi100.sdk.request.QueryTrackReq;
+import com.kuaidi100.sdk.response.QueryTrackMapResp;
+import com.kuaidi100.sdk.utils.SignUtils;
+import com.ruoyi.order.util.vo.MapTrackKD100Vo;
+import com.ruoyi.order.util.vo.QueryKD100Vo;
+import lombok.extern.slf4j.Slf4j;
+
+
+/**
+ * 快递工具类
+ * @author zhibing.pu
+ * @Date 2024/12/13 18:05
+ */
+@Slf4j
+public class ExpressDeliveryUtil {
+	
+	private static String customer = "8FC09A2DE534142E93BE068830FCA43E";
+	
+	private static String key = "KFBYEnrO3201";
+	
+	
+	/**
+	 * 查询快递实时数据
+	 * @param com   快递公司代码
+	 * @param num   快递单号
+	 * @return
+	 */
+	public static QueryKD100Vo kd100QueryTrack(String com, String num){
+		QueryTrackReq queryTrackReq = new QueryTrackReq();
+		QueryTrackParam queryTrackParam = new QueryTrackParam();
+		queryTrackParam.setCom(com);
+		queryTrackParam.setNum(num);
+		String param = new Gson().toJson(queryTrackParam);
+		
+		queryTrackReq.setParam(param);
+		queryTrackReq.setCustomer(customer);
+		queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
+		
+		IBaseClient baseClient = new QueryTrack();
+		HttpResult execute = null;
+		try {
+			execute = baseClient.execute(queryTrackReq);
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		String result = execute.getBody();
+		QueryKD100Vo queryKD100Vo = JSON.parseObject(result, QueryKD100Vo.class);
+		return queryKD100Vo;
+	}
+	
+	
+	/**
+	 * 快递100查询带有地图轨迹数据的快递详情
+	 * @param com   快递公司代码
+	 * @param num   快递单号
+	 * @param from  触发城市名称
+	 * @param to    到达城市名称
+	 * @return
+	 */
+	public static MapTrackKD100Vo kd100MapTrack(String com, String num, String from, String to){
+		QueryTrackReq queryTrackReq = new QueryTrackReq();
+		QueryTrackParam queryTrackParam = new QueryTrackParam();
+		queryTrackParam.setCom(CompanyConstant.YD);
+		queryTrackParam.setNum(num);
+		queryTrackParam.setFrom(from);
+		queryTrackParam.setTo(to);
+		queryTrackParam.setResultv2("2");
+		String param = new Gson().toJson(queryTrackParam);
+		
+		queryTrackReq.setParam(param);
+		queryTrackReq.setCustomer(customer);
+		queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
+		
+		IBaseClient baseClient = new QueryTrackMap();
+		HttpResult execute = null;
+		try {
+			execute = baseClient.execute(queryTrackReq);
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		
+		String result = execute.getBody();
+		MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(result, MapTrackKD100Vo.class);
+		return mapTrackKD100Vo;
+	}
+	
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/MapTrackKD100Vo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/MapTrackKD100Vo.java
new file mode 100644
index 0000000..c61fbf8
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/MapTrackKD100Vo.java
@@ -0,0 +1,36 @@
+package com.ruoyi.order.util.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/16 15:09
+ */
+@Data
+@ApiModel
+public class MapTrackKD100Vo {
+	@ApiModelProperty("快递状态(0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签)")
+	private String state;
+	@ApiModelProperty("是否签收标记,0未签收,1已签收,请忽略,明细状态请参考state字段")
+	private String ischeck;
+	@ApiModelProperty("快递公司编码")
+	private String com;
+	@ApiModelProperty("单号")
+	private String nu;
+	@ApiModelProperty("轨迹地图链接")
+	private String trailUrl;
+	@ApiModelProperty("预计到达时间")
+	private String arrivalTime;
+	@ApiModelProperty("平均耗时")
+	private String totalTime;
+	@ApiModelProperty("到达还需多少时间")
+	private String remainTime;
+	@ApiModelProperty("是否存在环路")
+	private Boolean isLoop;
+	@ApiModelProperty("查询结果数组")
+	private List<QueryKD100ListVo> data;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100ListVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100ListVo.java
new file mode 100644
index 0000000..12ec29c
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100ListVo.java
@@ -0,0 +1,22 @@
+package com.ruoyi.order.util.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/16 15:00
+ */
+@Data
+@ApiModel
+public class QueryKD100ListVo {
+	@ApiModelProperty("内容")
+	private String context;
+	@ApiModelProperty("时间")
+	private String time;
+	@ApiModelProperty("格式化为后时间")
+	private String ftime;
+	@ApiModelProperty("本数据元对应的物流状态名称或者高级状态名称,实时查询接口中提交resultv2=1或者resultv2=4标记后才会出现")
+	private String status;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100Vo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100Vo.java
new file mode 100644
index 0000000..31e2339
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/vo/QueryKD100Vo.java
@@ -0,0 +1,27 @@
+package com.ruoyi.order.util.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 快递100查询快递详情
+ * @author zhibing.pu
+ * @Date 2024/12/16 14:56
+ */
+@Data
+@ApiModel
+public class QueryKD100Vo {
+	@ApiModelProperty("快递状态(0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签)")
+	private String state;
+	@ApiModelProperty("是否签收标记,0未签收,1已签收,请忽略,明细状态请参考state字段")
+	private String ischeck;
+	@ApiModelProperty("快递公司编码")
+	private String com;
+	@ApiModelProperty("单号")
+	private String nu;
+	@ApiModelProperty("查询结果数组")
+	private List<QueryKD100ListVo> data;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
new file mode 100644
index 0000000..75039e3
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
@@ -0,0 +1,58 @@
+package com.ruoyi.order.vo;
+
+import com.ruoyi.order.util.vo.QueryKD100Vo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/13 17:37
+ */
+@Data
+@ApiModel
+public class OrderInfoVo {
+	@ApiModelProperty("订单id")
+	private String id;
+	@ApiModelProperty("订单编号")
+	private String orderNumber;
+	@ApiModelProperty("下单时间")
+	private String createTime;
+	@ApiModelProperty("订单状态(1待发货2待收货3待使用4已完成5已取消6已退款7售后中8已评价)")
+	private Integer orderStatus;
+	@ApiModelProperty("下单用户")
+	private String userName;
+	@ApiModelProperty("联系电话")
+	private String phone;
+	@ApiModelProperty("订单类型")
+	private String orderType;
+	@ApiModelProperty("核销门店")
+	private String shopName;
+	@ApiModelProperty("支付方式(1=微信,2=余额,3=积分)")
+	private Integer paymentMethod;
+	@ApiModelProperty("订单总金额")
+	private BigDecimal totalAmount;
+	@ApiModelProperty("优惠券")
+	private String couponName;
+	@ApiModelProperty("抵扣金额")
+	private BigDecimal discountAmount;
+	@ApiModelProperty("快递费")
+	private BigDecimal expressAmount;
+	@ApiModelProperty("支付金额")
+	private BigDecimal paymentAmount;
+	@ApiModelProperty("获得积分")
+	private Integer point;
+	@ApiModelProperty("收件人")
+	private String recipient;
+	@ApiModelProperty("收件地址")
+	private String address;
+	@ApiModelProperty("物流信息")
+	private QueryKD100Vo express;
+	@ApiModelProperty("商品数量")
+	private Integer goodsNum;
+	@ApiModelProperty("商品信息")
+	private String goodsJson;
+	
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java
new file mode 100644
index 0000000..e3b7a5b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java
@@ -0,0 +1,32 @@
+package com.ruoyi.order.vo;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/12 17:29
+ */
+@Data
+@ApiModel
+public class OrderPageList extends BasePage {
+	@ApiModelProperty("订单编号")
+	public String code;
+	@ApiModelProperty("下单用户")
+	private String userName;
+	@ApiModelProperty("联系电话")
+	private String phone;
+	@ApiModelProperty("商品类型(1=服务,2=单品)")
+	private Integer goodsType;
+	@ApiModelProperty("支付方式(1=微信,2=余额,3=积分)")
+	private Integer paymentType;
+	@ApiModelProperty("订单状态(1待发货2待收货3待使用4已完成5已取消6已退款7售后中8已评价)")
+	private Integer status;
+	
+	private Integer shopId;
+	private List<Long> appUserIds;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java
new file mode 100644
index 0000000..7c97847
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java
@@ -0,0 +1,39 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/12 17:34
+ */
+@Data
+@ApiModel
+public class OrderPageListVo {
+	@ApiModelProperty("订单id")
+	private String id;
+	@ApiModelProperty("订单编号")
+	private String code;
+	@ApiModelProperty("下单时间")
+	private String createTime;
+	@ApiModelProperty("下单用户")
+	private String userName;
+	@ApiModelProperty("联系电话")
+	private String phone;
+	@ApiModelProperty("商品类型(1=服务,2=单品)")
+	private Integer goodsType;
+	@ApiModelProperty("支付方式(1=微信,2=余额,3=积分)")
+	private Integer paymentType;
+	@ApiModelProperty("订单金额")
+	private BigDecimal orderMoney;
+	@ApiModelProperty("订单状态(1待发货2待收货3待使用4已完成5已取消6已退款7售后中8已评价)")
+	private Integer status;
+	
+	/**
+	 * 用户id
+	 */
+	private Long appUserId;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderBalancePaymentMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderBalancePaymentMapper.xml
new file mode 100644
index 0000000..20086a9
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderBalancePaymentMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.OrderBalancePayment">
+
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index e6f9770..f71d000 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -37,4 +37,44 @@
         ORDER BY
         o.create_time DESC
     </select>
+    
+    
+    
+    <select id="getOrderPageList" resultType="com.ruoyi.order.vo.OrderPageListVo">
+        select
+            id,
+            order_number as code,
+            DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') as createTime,
+            app_user_id as appUserId,
+            order_type as goodsType,
+            pay_method as paymentType,
+            total_amount as orderMoney,
+            order_status as status
+        from t_order where del_flag = 0 and pay_status = 2
+        <if test="null != item.code and '' != item.code">
+            and order_number like CONCAT('%', #{item.code}, '%')
+        </if>
+        <if test="null != item.appUserIds and item.appUserIds.size() > 0">
+            and app_user_id in
+            <foreach collection="item.appUserIds" separator="," item="tem" index="index" open="(" close=")">
+                #{tem}
+            </foreach>
+        </if>
+        <if test="null != item.goodsType">
+            and order_type = #{item.goodsType}
+        </if>
+        <if test="null != item.paymentType">
+            and pay_method = #{item.paymentType}
+        </if>
+        <if test="null != item.status and 4 != item.status">
+            and order_status = #{item.status}
+        </if>
+        <if test="null != item.status and 4 == item.status">
+            and order_status in (4, 8)
+        </if>
+        <if test="null != item.shopId">
+            and shop_id = #{item.shopId} and address_json is null
+        </if>
+        order by create_time desc
+    </select>
 </mapper>
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java
index 18c5f56..9867001 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java
@@ -180,7 +180,7 @@
                     GoodsCategory goodsCategory = goodsCategoryService.getById(g.getGoodsCategoryId());
                     Integer shopId = goodsBargainPrice.getShopId();
                     Shop shop = shopService.getById(shopId);
-                    R<AppUser> r = appUserClient.getAppUserByPhone(shop.getPhone());
+                    R<AppUser> r = appUserClient.getAppUserByPhone1(shop.getPhone());
                     if (R.isError(r)){
                         throw new RuntimeException("获取店长信息失败");
                     }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
index e7f1abd..520af51 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
@@ -101,7 +101,7 @@
 
     @Override
     public Boolean cheUserByPhone(String phone) {
-        R<AppUser> r = appUserClient.getAppUserByPhone(phone);
+        R<AppUser> r = appUserClient.getAppUserByPhone1(phone);
         if (R.isError(r)){
             return false;
         }

--
Gitblit v1.7.1