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