From c8ea2d96f5b0522a09f3203ae98fe796084d2d15 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期六, 04 一月 2025 09:34:21 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/qijisheng --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 30 +- ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml | 6 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/UserShopClient.java | 37 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/GeodesyUtil.java | 4 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java | 5 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/UserShopClientFallbackFactory.java | 29 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java | 204 ++++++++++++++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserShopClientFallbackFactory.java | 30 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/tencentMap/TencentMapUtil.java | 40 ++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserShopController.java | 59 ++++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java | 14 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java | 7 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 26 - ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java | 7 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java | 24 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java | 5 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserShopClient.java | 36 ++ ruoyi-service/ruoyi-order/pom.xml | 7 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java | 22 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java | 2 ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 1 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 52 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java | 26 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java | 26 - ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java | 19 + ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java | 53 +++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/GeodesyUtil.java | 4 33 files changed, 686 insertions(+), 103 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserShopClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserShopClientFallbackFactory.java new file mode 100644 index 0000000..79246b2 --- /dev/null +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserShopClientFallbackFactory.java @@ -0,0 +1,30 @@ +package com.ruoyi.account.api.factory; + +import com.ruoyi.account.api.feignClient.AppUserShopClient; +import com.ruoyi.account.api.model.AppUserShop; +import com.ruoyi.common.core.domain.R; +import org.springframework.cloud.openfeign.FallbackFactory; + +import java.util.List; + +/** + * @author zhibing.pu + * @date 2025/1/2 18:50 + */ +public class AppUserShopClientFallbackFactory implements FallbackFactory<AppUserShopClient> { + @Override + public AppUserShopClient create(Throwable cause) { + return new AppUserShopClient(){ + + @Override + public R<List<AppUserShop>> getAppUserShop(Long userId) { + return R.fail("查询用户门店关系数据失败:" + cause.getMessage()); + } + + @Override + public R delAppUserShop(AppUserShop appUserShop) { + return R.fail("删除用户门店关系数据失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserShopClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserShopClient.java new file mode 100644 index 0000000..c1d2067 --- /dev/null +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserShopClient.java @@ -0,0 +1,36 @@ +package com.ruoyi.account.api.feignClient; + +import com.ruoyi.account.api.factory.AppUserShopClientFallbackFactory; +import com.ruoyi.account.api.model.AppUserShop; +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @author zhibing.pu + * @date 2025/1/2 18:49 + */ +@FeignClient(contextId = "AppUserShopClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = AppUserShopClientFallbackFactory.class) +public interface AppUserShopClient { + + + /** + * 查询用户门店关系数据 + * @param userId + * @return + */ + @GetMapping("/appUserShop/shop/{userId}") + R<List<AppUserShop>> getAppUserShop(@PathVariable("userId") Long userId); + + /** + * 删除用户门店关系数据 + */ + @PostMapping("/appUserShop/delAppUserShop") + R delAppUserShop(@RequestBody AppUserShop appUserShop); +} diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java index 6ded8bd..9bf0a8b 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserClickLog.java @@ -40,6 +40,9 @@ @TableField("create_time") private LocalDateTime createTime; + @TableField(exist = false) + private String createTimeStr; + @ApiModelProperty(value = "用户id") @TableField("app_user_id") private Long appUserId; diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java index 2136a62..f493dbb 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/UserCoupon.java @@ -32,6 +32,8 @@ @TableId("id") private Long id; + @TableField(exist = false) + private String idStr; @ApiModelProperty(value = "删除标志(0=否,1=是)") @TableField("del_flag") diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 781adb8..a1a0f95 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,4 +3,5 @@ com.ruoyi.account.api.factory.UserCouponClientFallbackFactory com.ruoyi.account.api.factory.UserPointFallbackFactory com.ruoyi.account.api.factory.BalanceChangeRecordClientFallbackFactory -com.ruoyi.account.api.factory.UserChangeLogFallbackFactory \ No newline at end of file +com.ruoyi.account.api.factory.UserChangeLogFallbackFactory +com.ruoyi.account.api.factory.AppUserShopClientFallbackFactory \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java index 6e75148..0952e7e 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java @@ -15,4 +15,6 @@ private Integer id; @ApiModelProperty("门店名称") private String name; + @ApiModelProperty("距离") + private Long distance; } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java index 1745681..e323fe5 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java @@ -190,5 +190,29 @@ private String receiverBankChannelNo; + @ApiModelProperty(value = "省") + @TableField("province") + private String province; + + @ApiModelProperty(value = "省编号") + @TableField("province_code") + private String provinceCode; + + @ApiModelProperty(value = "市") + @TableField("city") + private String city; + + @ApiModelProperty(value = "市编号") + @TableField("city_code") + private String cityCode; + + @ApiModelProperty(value = "区") + @TableField("district") + private String district; + + @ApiModelProperty(value = "区编号") + @TableField("district_code") + private String districtCode; + } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java index bf86892..137909e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java @@ -78,6 +78,11 @@ public R saveShopUser(SysUser user) { return R.fail("新增加门店员工账号数据失败:" + cause.getMessage()); } + + @Override + public R delShopUser(Integer objectId, Integer roleType) { + return R.fail("删除门店管理员账号失败:" + cause.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/UserShopClientFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/UserShopClientFallbackFactory.java new file mode 100644 index 0000000..cd65ea7 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/UserShopClientFallbackFactory.java @@ -0,0 +1,29 @@ +package com.ruoyi.system.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.feignClient.UserShopClient; +import com.ruoyi.system.api.model.UserShop; + +import java.util.List; + +/** + * @author zhibing.pu + * @date 2025/1/2 18:02 + */ +public class UserShopClientFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<UserShopClient> { + @Override + public UserShopClient create(Throwable cause) { + return new UserShopClient(){ + + @Override + public R<List<UserShop>> getUserShop(UserShop userShop) { + return R.fail("获取用户门店关系数据失败:" + cause.getMessage()); + } + + @Override + public R saveUserShop(UserShop userShop) { + return R.fail("保存门店用户关系数据失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java index e9dc726..7f566d9 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java @@ -96,6 +96,16 @@ * @return */ @PostMapping("/user/saveShopUser") - R saveShopUser(@RequestBody SysUser user); - + R<Long> saveShopUser(@RequestBody SysUser user); + + /** + * 删除门店所有管理员账号 + * @param objectId + * @param roleType + * @return + */ + @PostMapping("/user/delShopUser") + R delShopUser(@RequestParam("objectId") Integer objectId, @RequestParam("roleType") Integer roleType); + + } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/UserShopClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/UserShopClient.java new file mode 100644 index 0000000..dd0d420 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/UserShopClient.java @@ -0,0 +1,37 @@ +package com.ruoyi.system.api.feignClient; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.factory.UserShopClientFallbackFactory; +import com.ruoyi.system.api.model.UserShop; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @author zhibing.pu + * @date 2025/1/2 18:02 + */ +@FeignClient(contextId = "UserShopClient", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = UserShopClientFallbackFactory.class) +public interface UserShopClient { + + + /** + * 获取用户门店关系数据 + * @param userShop + * @return + */ + @PostMapping("/userShop/getUserShop") + R<List<UserShop>> getUserShop(@RequestBody UserShop userShop); + + + /** + * 保存门店用户关系数据 + * @param userShop + * @return + */ + @PostMapping("/userShop/saveUserShop") + R saveUserShop(@RequestBody UserShop userShop); +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java index 9a751e0..afbe76e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java @@ -22,7 +22,7 @@ * 用户id */ @TableField("user_id") - private Integer userId; + private Long userId; /** * 门店id */ diff --git a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 89b7d3a..1893ca1 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -5,3 +5,4 @@ com.ruoyi.system.api.factory.SysRoleFallbackFactory com.ruoyi.system.api.factory.SysLoginLogFallbackFactory com.ruoyi.system.api.factory.SysUserRoleFallbackFactory +com.ruoyi.system.api.factory.UserShopClientFallbackFactory 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 94f5316..8c95d49 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 @@ -1,6 +1,7 @@ package com.ruoyi.system.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; @@ -548,8 +549,7 @@ */ @ResponseBody @PostMapping("/saveShopUser") - public R saveShopUser(@RequestBody SysUser user){ - Integer shopId = user.getObjectId(); + public R<Long> saveShopUser(@RequestBody SysUser user){ SysUser one = userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, user.getPhonenumber()).eq(SysUser::getDelFlag, "0") .eq(SysUser::getStatus, "0").eq(SysUser::getRoleType, 2).eq(SysUser::getAppUserId, user.getAppUserId())); if(null == one){ @@ -560,17 +560,47 @@ userRole.setUserId(user.getUserId()); userRole.setRoleId(2L); userRoleService.save(userRole); - }else{ - user = one; } - //添加门店关系数据 - UserShop userShop = userShopService.getOne(new LambdaQueryWrapper<UserShop>().eq(UserShop::getShopId, shopId).eq(UserShop::getUserId, user.getAppUserId())); - if(null == userShop){ - userShop = new UserShop(); - userShop.setUserId(user.getUserId().intValue()); - userShop.setShopId(user.getObjectId()); - userShopService.save(userShop); + return R.ok(user.getUserId()); + } + + + /** + * 删除门店管理员账号 + * @param objectId + * @param roleType + * @return + */ + @PostMapping("/user/delShopUser") + public R delShopUser(@RequestParam("objectId") Integer objectId, @RequestParam("roleType") Integer roleType){ + List<SysUser> list = userService.list(new LambdaUpdateWrapper<SysUser>().eq(SysUser::getObjectId, objectId).eq(SysUser::getRoleType, roleType) + .eq(SysUser::getDelFlag, "0").eq(SysUser::getStatus, "0")); + for (SysUser sysUser : list) { + List<UserShop> list1 = userShopService.list(new LambdaUpdateWrapper<UserShop>().eq(UserShop::getUserId, sysUser.getUserId())); + List<Integer> collect = list1.stream().map(UserShop::getShopId).collect(Collectors.toList()); + if(collect.contains(objectId) && collect.size() == 1){ + sysUser.setDelFlag("2"); + userService.updateById(sysUser); + } + userShopService.remove(new LambdaUpdateWrapper<UserShop>().eq(UserShop::getUserId, sysUser.getUserId()).eq(UserShop::getShopId, objectId)); } return R.ok(); } + + + + @ResponseBody + @GetMapping("/switchShop") + @ApiOperation(value = "切换门店", tags = {"门店后台-首页"}) + public R switchShop(@PathVariable("shopId") Integer shopId){ + Long userid = tokenService.getLoginUser().getUserid(); + UserShop one = userShopService.getOne(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, userid).eq(UserShop::getShopId, shopId)); + if(null == one){ + return R.fail("切换失败"); + } + SysUser sysUser = userService.getById(userid); + sysUser.setObjectId(shopId); + userService.updateById(sysUser); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserShopController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserShopController.java new file mode 100644 index 0000000..cccb3ec --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserShopController.java @@ -0,0 +1,59 @@ +package com.ruoyi.system.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.model.UserShop; +import com.ruoyi.system.service.UserShopService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author zhibing.pu + * @date 2025/1/2 18:04 + */ +@RestController +@RequestMapping("/userShop") +public class UserShopController { + + @Resource + private UserShopService userShopService; + + + /** + * 获取用户门店关系数据 + * @param userShop + * @return + */ + @PostMapping("/getUserShop") + public R<List<UserShop>> getUserShop(@RequestBody UserShop userShop){ + LambdaUpdateWrapper<UserShop> wrapper = new LambdaUpdateWrapper<UserShop>(); + if(null != userShop.getUserId()){ + wrapper.eq(UserShop::getUserId, userShop.getUserId()); + } + if(null != userShop.getShopId()){ + wrapper.eq(UserShop::getShopId, userShop.getShopId()); + } + if(null != userShop.getRoleType()){ + wrapper.eq(UserShop::getRoleType, userShop.getRoleType()); + } + List<UserShop> list = userShopService.list(wrapper); + return R.ok(list); + } + + + /** + * 保存数据 + * @param userShop + * @return + */ + @PostMapping("/saveUserShop") + public R saveUserShop(@RequestBody UserShop userShop){ + userShopService.save(userShop); + return R.ok(); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 3f9f7e9..2b26388 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -228,13 +228,13 @@ @Override public int insertDept(SysDept dept) { - SysDept info = deptMapper.selectDeptById(dept.getParentId()); - // 如果父节点不为正常状态,则不允许新增子节点 - if (null != info && !UserConstants.DEPT_NORMAL.equals(info.getStatus())) - { - throw new ServiceException("部门停用,不允许新增"); - } - dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); +// SysDept info = deptMapper.selectDeptById(dept.getParentId()); +// // 如果父节点不为正常状态,则不允许新增子节点 +// if (null != info && !UserConstants.DEPT_NORMAL.equals(info.getStatus())) +// { +// throw new ServiceException("部门停用,不允许新增"); +// } +// dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); //判断店铺数据 Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserService.getById(userid); @@ -253,14 +253,14 @@ @Override public int updateDept(SysDept dept) { - SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); - SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); - if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { - String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); - String oldAncestors = oldDept.getAncestors(); - dept.setAncestors(newAncestors); - updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); - } +// SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); +// SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); +// if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { +// String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); +// String oldAncestors = oldDept.getAncestors(); +// dept.setAncestors(newAncestors); +// updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); +// } //判断店铺数据 Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserService.getById(userid); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java index e492e09..09899e0 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java @@ -1,6 +1,7 @@ package com.ruoyi.account.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ruoyi.account.api.model.AppUserShop; import com.ruoyi.account.service.AppUserShopService; import com.ruoyi.common.core.domain.R; @@ -22,7 +23,11 @@ @PostMapping("/addAppUserShop") public R<Void> add(@RequestBody AppUserShop appUserShop) { - appUserShopService.save(appUserShop); + long count = appUserShopService.count(new LambdaQueryWrapper<AppUserShop>() + .eq(AppUserShop::getAppUserId, appUserShop.getAppUserId()).eq(AppUserShop::getShopId, appUserShop.getShopId())); + if(0 == count){ + appUserShopService.save(appUserShop); + } return R.ok(); } @@ -32,7 +37,24 @@ return R.ok(appUserShopService.list(new LambdaQueryWrapper<AppUserShop>() .eq(AppUserShop::getAppUserId,userId))); } - + + /** + * 删除门店用户关系数据 + * @param appUserShop + * @return + */ + @PostMapping("/delAppUserShop") + public R delAppUserShop(@RequestBody AppUserShop appUserShop){ + LambdaUpdateWrapper<AppUserShop> wrapper = new LambdaUpdateWrapper<>(); + if(null != appUserShop.getAppUserId()){ + wrapper.eq(AppUserShop::getAppUserId, appUserShop.getAppUserId()); + } + if(null != appUserShop.getShopId()){ + wrapper.eq(AppUserShop::getShopId, appUserShop.getShopId()); + } + appUserShopService.remove(wrapper); + return R.ok(); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java index abd5065..a3f6d4b 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserClickLogController.java @@ -26,12 +26,17 @@ @RestController @RequestMapping("/user-click-log") public class UserClickLogController { + + @Resource private UserClickLogService userClickLogService; + + + + @PostMapping("/page") @ApiOperation(value = "申请点击列表", tags = {"后台"}) public R<IPage<UserClickLog>> page(@RequestBody UserCancelQuery agentQuery) { - return R.ok(userClickLogService.pageList(agentQuery)); } 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 8176748..8608eff 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 @@ -1,6 +1,7 @@ package com.ruoyi.account.controller; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.UserCoupon; @@ -30,6 +31,7 @@ import io.swagger.annotations.ApiParam; import java.time.LocalDateTime; +import java.util.stream.Collectors; /** * <p> @@ -73,6 +75,7 @@ .lt(status!=null&&status==3,UserCoupon::getEndTime, LocalDateTime.now()) .eq(UserCoupon::getAppUserId, userid).page(Page.of(pageNum-1, pageSize)); for (UserCoupon record : page.getRecords()) { + record.setIdStr(record.getId().toString()); CouponInfo data = couponClient.detail(record.getCouponId()).getData(); CouponInfoVo vo = new CouponInfoVo(); BeanUtils.copyProperties(data,vo); @@ -206,5 +209,55 @@ public R<Long> getCouponCount(@RequestParam Integer couponId){ return R.ok(userCouponService.lambdaQuery().eq(UserCoupon::getCouponId, couponId).count()); } + + + + + @ResponseBody + @GetMapping("/getCouponInfoInfo") + @ApiOperation(value = "获取核销商品券详情", tags = {"小程序-个人中心-门店管理"}) + public R<UserCoupon> getCouponInfoInfo(String id){ + UserCoupon userCoupon = userCouponService.getById(id); + CouponInfo couponInfo = couponClient.detail(userCoupon.getCouponId()).getData(); + List<Goods> goods = null; + if("-1".equals(couponInfo.getForGoodIds())){ + goods = goodsClient.getGoodsByType(2).getData(); + }else{ + goods = goodsClient.getGoodsById(couponInfo.getForGoodIds().split(",")).getData(); + } + CouponInfoVo couponInfoVo = new CouponInfoVo(); + BeanUtils.copyProperties(couponInfo, couponInfoVo); + couponInfoVo.setGoodNames(goods.stream().map(Goods::getName).collect(Collectors.toList())); + userCoupon.setCouponInfoVo(couponInfoVo); + if (userCoupon.getUseTime()==null){ + userCoupon.setStatus(1); + if (userCoupon.getEndTime().isBefore(LocalDateTime.now())){ + userCoupon.setStatus(3); + } + }else { + userCoupon.setStatus(2); + } + return R.ok(userCoupon); + } + + @ResponseBody + @PutMapping("/useCoupon/{id}") + @ApiOperation(value = "核销商品优惠券", tags = {"小程序-个人中心-门店管理"}) + public R useCoupon(@PathVariable("id") String id){ + UserCoupon userCoupon = userCouponService.getById(id); + if(null == userCoupon){ + return R.ok("核销码错误"); + } + if(userCoupon.getUseTime() != null){ + return R.ok("优惠券已使用"); + } + if(LocalDateTime.now().isAfter(userCoupon.getEndTime())){ + return R.ok("优惠券已过期"); + } + userCoupon.setStatus(2); + userCoupon.setUseTime(LocalDateTime.now()); + userCouponService.updateById(userCoupon); + return R.ok(); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java index ade3997..f3639bb 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java @@ -2,6 +2,10 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; +import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.account.api.model.UserClickLog; +import com.ruoyi.account.service.AppUserService; +import com.ruoyi.account.service.UserClickLogService; import com.ruoyi.account.service.VipCenterService; import com.ruoyi.account.service.VipSettingService; import com.ruoyi.account.vo.vip.Level; @@ -19,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -46,6 +51,10 @@ private VipGoodClient vipGoodClient; @Resource private GoodsClient goodsClient; + @Resource + private AppUserService appUserService; + @Resource + private UserClickLogService userClickLogService; @GetMapping("getVipLevelList") @@ -106,6 +115,16 @@ vipLevel.setLevelList(levelList); vipLevel.setCurrentLevel(loginUserVipSetting.getId()); + + //添加操作记录 + AppUser appUser = appUserService.getById(userid); + UserClickLog userClickLog = new UserClickLog(); + userClickLog.setDelFlag(0); + userClickLog.setCreateTime(LocalDateTime.now()); + userClickLog.setAppUserId(userid); + userClickLog.setVipId(appUser.getVipId()); + userClickLogService.save(userClickLog); + return R.ok(vipLevel); } catch (Exception e) { log.error("会员等级获取失败", e); 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 2094c25..c0480f9 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 @@ -428,32 +428,6 @@ weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.TRIAL, filePath + fileName); appUser.setQrCode(accessPath + fileName); this.updateById(appUser); - - //查询当前注册的手机号是都和门店管理员手机号相同 - Shop shop = shopClient.getShopByPhone(registerAccount.getPhone()).getData(); - if(null != shop){ - //添加门店用户关系数据 - AppUserShop appUserShop = appUserShopService.getOne(new LambdaQueryWrapper<AppUserShop>().eq(AppUserShop::getAppUserId, appUser.getId()).eq(AppUserShop::getShopId, shop.getId())); - if(null == appUserShop){ - appUserShop = new AppUserShop(); - appUserShop.setShopId(shop.getId()); - appUserShop.setAppUserId(appUser.getId()); - appUserShopService.save(appUserShop); - //添加管理后台账号 - SysUser user = new SysUser(); - user.setDeptId(1L); - user.setUserName(appUser.getName()); - user.setNickName(appUser.getName()); - user.setPhonenumber(appUser.getPhone()); - user.setAvatar(appUser.getAvatar()); - user.setStatus("0"); - user.setDelFlag("0"); - user.setRoleType(2); - user.setObjectId(shop.getId()); - user.setAppUserId(appUser.getId()); - sysUserClient.saveShopUser(user); - } - } } LoginVo loginVo = new LoginVo(); loginVo.setSkipPage(1); diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml index 5e45818..d1e46ca 100644 --- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml +++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserClickLogMapper.xml @@ -16,7 +16,11 @@ id, del_flag, create_time, app_user_id, vip_id </sql> <select id="pageList" resultType="com.ruoyi.account.api.model.UserClickLog"> - select t1.* ,t2.phone as userPhone,t2.name as userName + select + t1.* , + t2.phone as userPhone, + t2.name as userName, + DATE_FORMAT(t1.create_time, '%Y-%m-%d %H:%i:%s') as createTimeStr from t_user_click_log t1 left join t_app_user t2 on t1.app_user_id = t2.id <where> diff --git a/ruoyi-service/ruoyi-order/pom.xml b/ruoyi-service/ruoyi-order/pom.xml index 8f7a20b..1d2c7a2 100644 --- a/ruoyi-service/ruoyi-order/pom.xml +++ b/ruoyi-service/ruoyi-order/pom.xml @@ -163,6 +163,13 @@ <version>0.2.15</version> </dependency> + + <!-- 计算两坐标间的直线距离 --> + <dependency> + <groupId>org.gavaghan</groupId> + <artifactId>geodesy</artifactId> + <version>1.1.3</version> + </dependency> </dependencies> <build> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java index 3f4c1a0..da51645 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java @@ -163,33 +163,7 @@ - @ResponseBody - @GetMapping("/getVerifiableShop") - @ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"}) - public R<List<VerifiableShopVo>> getVerifiableShop(){ - LoginUser loginUser = tokenService.getLoginUserApplet(); - List<ShoppingCart> shoppingCarts = shoppingCartService.list(new LambdaQueryWrapper<ShoppingCart>() - .eq(ShoppingCart::getAppUserId, loginUser.getUserid())); - List<Integer> goodsIds = shoppingCarts.stream().map(ShoppingCart::getGoodsId).collect(Collectors.toList()); - GetGoodsShopByGoodsIds goodsShopByGoodsIds = new GetGoodsShopByGoodsIds(); - goodsShopByGoodsIds.setGoodsIds(goodsIds); - R<List<GoodsShop>> r = goodsShopClient.getGoodsShopByGoodsIds(goodsShopByGoodsIds); - List<GoodsShop> goodsShops = r.getData(); - List<VerifiableShopVo> verifiableShopVoList = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(goodsShops)){ - for (GoodsShop goodsShop : goodsShops) { - R<Shop> shopR = shopClient.getShopById(goodsShop.getShopId()); - if (R.isSuccess(shopR) && null != shopR.getData()){ - VerifiableShopVo verifiableShopVo = new VerifiableShopVo(); - verifiableShopVo.setId(shopR.getData().getId()); - verifiableShopVo.setName(shopR.getData().getName()); - verifiableShopVoList.add(verifiableShopVo); - } - } - } - return R.ok(verifiableShopVoList); - } @GetMapping("/getGoodsPrice") 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 b5793fe..e3bc81d 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 @@ -335,7 +335,7 @@ @Override public R cancelOrder(Long orderId) { Order order = this.getById(orderId); - if(Arrays.asList(4, 5, 6, 7, 8).contains(order.getOrderStatus())){ + if(Arrays.asList(5, 6, 7).contains(order.getOrderStatus())){ return R.fail("无效的操作"); } order.setOrderStatus(5); 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 2802a73..cbca3c0 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 @@ -379,7 +379,7 @@ confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN)); } BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData(); - confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1")); + confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1); int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum(); confirmOrderVo.setEarnPoint(earnPoint); //支付金额,订单金额-订单优惠 diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/GeodesyUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/GeodesyUtil.java similarity index 96% rename from ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/GeodesyUtil.java rename to ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/GeodesyUtil.java index 42e9578..6cd7ad0 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/GeodesyUtil.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/GeodesyUtil.java @@ -1,4 +1,4 @@ -package com.ruoyi.other.task; +package com.ruoyi.order.util; import com.ruoyi.common.core.utils.StringUtils; import org.gavaghan.geodesy.Ellipsoid; @@ -68,6 +68,6 @@ public static void main(String[] ages){ GeodesyUtil geodesyUtil = new GeodesyUtil(); - geodesyUtil.getDistance("115.481028,39.989643", "114.465302,40.004717"); + getDistance("115.481028,39.989643", "114.465302,40.004717"); } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java index f2872c6..f7de2e1 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.feignClient.AppUserClient; @@ -203,5 +204,11 @@ return null; } + + + + + + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java index c84e160..859cc37 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java @@ -4,24 +4,30 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.feignClient.AppUserShopClient; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.AppUserShop; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.vo.VerifiableShopVo; import com.ruoyi.other.api.domain.Shop; import com.ruoyi.other.api.domain.ShopScore; import com.ruoyi.other.mapper.ShopMapper; import com.ruoyi.other.service.ShopScoreService; import com.ruoyi.other.service.ShopService; +import com.ruoyi.other.util.GeodesyUtil; +import com.ruoyi.other.util.tencentMap.TencentMapUtil; import com.ruoyi.other.vo.NearbyShopVO; import com.ruoyi.other.vo.SaveWithdrawalAccount; import com.ruoyi.other.vo.ShopDetailVO; import com.ruoyi.other.vo.ShopStatistics; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; +import com.ruoyi.system.api.feignClient.UserShopClient; import com.ruoyi.system.api.model.LoginUser; +import com.ruoyi.system.api.model.UserShop; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -32,9 +38,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -61,6 +65,10 @@ private SysUserClient sysUserClient; @Resource private ShopMapper shopMapper; + @Resource + private UserShopClient userShopClient; + @Resource + private AppUserShopClient appUserShopClient; @@ -88,8 +96,11 @@ shop.setServerOrderNumber(0); shop.setCustomOrderNumber(0); shop.setAppUserId(appUser.getId()); + String city = TencentMapUtil.inverseGeographicalAnalysis(shop.getLongitude(), shop.getLatitude(), false); + shop.setProvinceCode(city.substring(0, 2) + "0000"); + shop.setCityCode(city.substring(0, 4) + "00"); + shop.setDistrictCode(city); shopService.save(shop); - AppUserShop appUserShop = new AppUserShop(); appUserShop.setAppUserId(appUser.getId()); @@ -102,6 +113,44 @@ R<Void> editAppUserR = appUserClient.editAppUserById(appUser); if (R.isError(editAppUserR)){ throw new RuntimeException("添加失败"); + } + //添加门店后台账号和门店关系数据 + SysUser sysUser = sysUserClient.queryUserByUserName(phone).getData(); + if(null != sysUser){ + UserShop userShop = new UserShop(); + userShop.setUserId(sysUser.getUserId()); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + List<UserShop> data = userShopClient.getUserShop(userShop).getData(); + if(null == data || data.size() == 0){ + userShop = new UserShop(); + userShop.setUserId(sysUser.getUserId()); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + userShopClient.saveUserShop(userShop); + } + }else{ + //添加管理后台账号 + SysUser user = new SysUser(); + user.setDeptId(1L); + user.setUserName(appUser.getPhone()); + user.setNickName(appUser.getName()); + user.setPhonenumber(appUser.getPhone()); + user.setAvatar(appUser.getAvatar()); + user.setStatus("0"); + user.setDelFlag("0"); + user.setRoleType(2); + user.setObjectId(shop.getId()); + user.setAppUserId(appUser.getId()); + user.setPassword(phone.substring(5)); + user.setCreateTime(new Date()); + Long userId = sysUserClient.saveShopUser(user).getData(); + + UserShop userShop = new UserShop(); + userShop.setUserId(userId); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + userShopClient.saveUserShop(userShop); } return R.ok(); } @@ -120,6 +169,27 @@ Shop shop = shopService.getById(id); shop.setDelFlag(1); shopService.updateById(shop); + //获取门店的员工数据 + UserShop userShop = new UserShop(); + userShop.setShopId(shop.getId()); + List<UserShop> data = userShopClient.getUserShop(userShop).getData(); + List<Integer> collect = data.stream().map(UserShop::getUserId).collect(Collectors.toList()).stream().map(Long::intValue).collect(Collectors.toList()); + List<SysUser> sysUserList = sysUserClient.getUserList(collect).getData(); + //删除门店下的所有员工 + sysUserClient.delShopUser(shop.getId(), 2); + //修改小程序用户类型和门店数据 + for (SysUser sysUser : sysUserList) { + String userName = sysUser.getUserName(); + //通过电话号码查询小程序用户和门店关系数据 + AppUser appUser = appUserClient.getAppUserByPhone1(userName).getData(); + //需要先判断用户是否没有关联任何门店 + List<AppUserShop> userShops = appUserShopClient.getAppUserShop(appUser.getId()).getData(); + if(userShops.size() == 1 && userShops.get(0).getShopId().equals(shop.getId())){ + appUser.setUserType(1); + appUserClient.editAppUserById(appUser); + } + + } return R.ok(); } @@ -130,7 +200,74 @@ if (!shopService.cheUserByPhone(phone)) { return R.fail("该手机号未注册"); } + String city = TencentMapUtil.inverseGeographicalAnalysis(shop.getLongitude(), shop.getLatitude(), false); + shop.setProvinceCode(city.substring(0, 2) + "0000"); + shop.setCityCode(city.substring(0, 4) + "00"); + shop.setDistrictCode(city); + Shop old_shop = shopService.getById(shop.getId()); shopService.updateById(shop); + //修改管理员 + AppUser appUser = appUserClient.getAppUserById(old_shop.getAppUserId()); + //需要先判断用户是否没有关联任何门店 + List<AppUserShop> userShops = appUserShopClient.getAppUserShop(appUser.getId()).getData(); + if(userShops.size() == 1 && userShops.get(0).getShopId().equals(shop.getId())){ + appUser.setUserType(1); + appUserClient.editAppUserById(appUser); + } + AppUserShop appUserShop = new AppUserShop(); + appUserShop.setAppUserId(appUser.getId()); + appUserShop.setShopId(shop.getId()); + appUserShopClient.delAppUserShop(appUserShop); + + //添加新管理员 + appUser = appUserClient.getAppUserByPhone1(phone).getData(); + appUserShop = new AppUserShop(); + appUserShop.setAppUserId(appUser.getId()); + appUserShop.setShopId(shop.getId()); + appUserClient.addAppUserShop(appUserShop); + + //修改管理员 + shop.setAppUserId(appUser.getId()); + shopService.updateById(shop); + + //添加门店后台账号和门店关系数据 + SysUser sysUser = sysUserClient.queryUserByUserName(phone).getData(); + if(null != sysUser){ + UserShop userShop = new UserShop(); + userShop.setUserId(sysUser.getUserId()); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + List<UserShop> data = userShopClient.getUserShop(userShop).getData(); + if(null == data || data.size() == 0){ + userShop = new UserShop(); + userShop.setUserId(sysUser.getUserId()); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + userShopClient.saveUserShop(userShop); + } + }else{ + //添加管理后台账号 + SysUser user = new SysUser(); + user.setDeptId(1L); + user.setUserName(appUser.getPhone()); + user.setNickName(appUser.getName()); + user.setPhonenumber(appUser.getPhone()); + user.setAvatar(appUser.getAvatar()); + user.setStatus("0"); + user.setDelFlag("0"); + user.setRoleType(2); + user.setObjectId(shop.getId()); + user.setAppUserId(appUser.getId()); + user.setPassword(phone.substring(5)); + user.setCreateTime(new Date()); + Long userId = sysUserClient.saveShopUser(user).getData(); + + UserShop userShop = new UserShop(); + userShop.setUserId(userId); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + userShopClient.saveUserShop(userShop); + } return R.ok(); } @@ -162,9 +299,12 @@ String[] idsArr = ids.split(","); for (String id : idsArr) { Shop shop = shopService.getById(Integer.valueOf(id)); - R<SysUser> sysUser = sysUserClient.getSysUser(shop.getAppUserId()); - SysUser userData = sysUser.getData(); - userData.setPassword(getLastSixDigits(userData.getPhonenumber())); + UserShop userShop = new UserShop(); + userShop.setShopId(shop.getId()); + userShop.setRoleType(1); + List<UserShop> data = userShopClient.getUserShop(userShop).getData(); + SysUser userData = sysUserClient.getSysUser(data.get(0).getUserId()).getData(); + userData.setPassword(userData.getPhonenumber().substring(5)); sysUserClient.resetPassword(userData); } return R.ok(); @@ -315,6 +455,56 @@ public void updateShop(@RequestBody Shop shop){ shopService.updateById(shop); } + + + + + @ResponseBody + @GetMapping("/getVerifiableShop") + @ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"}) + public R<List<VerifiableShopVo>> getVerifiableShop(String longitude, String latitude){ + String city = TencentMapUtil.inverseGeographicalAnalysis(longitude, latitude, false); + city = city.substring(0, 4) + "00"; + List<Shop> list = shopService.list(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getCityCode, city)); + List<VerifiableShopVo> verifiableShopVoList = new ArrayList<>(); + for (Shop shop : list) { + VerifiableShopVo vo = new VerifiableShopVo(); + vo.setId(shop.getId()); + vo.setName(shop.getName()); + Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, shop.getLongitude() + "," + shop.getLatitude()).get("WGS84"); + vo.setDistance(wgs84.longValue()); + verifiableShopVoList.add(vo); + } + verifiableShopVoList.sort(new Comparator<VerifiableShopVo>() { + @Override + public int compare(VerifiableShopVo o1, VerifiableShopVo o2) { + return o1.getDistance().compareTo(o2.getDistance()); + } + }); + return R.ok(verifiableShopVoList); + } + + + + @ResponseBody + @GetMapping("/getSysUserShop") + @ApiOperation(value = "获取可切换的门店列表", tags = {"门店后台-首页"}) + public R<List<VerifiableShopVo>> getSysUserShop(){ + Long userid = tokenService.getLoginUser().getUserid(); + UserShop userShop = new UserShop(); + userShop.setUserId(userid); + List<UserShop> data = userShopClient.getUserShop(userShop).getData(); + List<Integer> collect = data.stream().map(UserShop::getShopId).collect(Collectors.toList()); + List<Shop> shops = shopService.listByIds(collect); + List<VerifiableShopVo> list = new ArrayList<>(); + for (Shop shop : shops) { + VerifiableShopVo vo = new VerifiableShopVo(); + vo.setId(shop.getId()); + vo.setName(shop.getName()); + list.add(vo); + } + return R.ok(list); + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java index ee88517..3e68440 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.feignClient.AppUserClient; @@ -35,6 +36,9 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; /** * <p> @@ -73,10 +77,22 @@ public R<IPage<ShopWithdraw>> list(@ApiParam("页码") @RequestParam Integer pageNum, @ApiParam("每一页数据大小") Integer pageSize, ShopWithdraw shopWithdraw) { - + List<Shop> list = shopService.list(new LambdaUpdateWrapper<Shop>().like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), Shop::getName, shopWithdraw.getShopName()).eq(Shop::getDelFlag, 0)); + List<Integer> collect1 = list.stream().map(Shop::getId).collect(Collectors.toList()); Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>() - .like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), ShopWithdraw::getShopName, shopWithdraw.getShopName())); - page.getRecords().forEach(item-> item.setShopName(shopService.getById(item.getShopId()).getName())); + .in(collect1.size() > 0, ShopWithdraw::getShopId, collect1)); + List<ShopWithdraw> records = page.getRecords(); + List<Integer> collect = records.stream().map(ShopWithdraw::getShopId).collect(Collectors.toList()); + List<Shop> shops = null; + if(collect.size() > 0){ + shops = shopService.listByIds(collect); + } + for(ShopWithdraw item : records){ + Optional<Shop> first = shops.stream().filter(s -> s.getId().equals(item.getId())).findFirst(); + if(first.isPresent()){ + item.setShopName(first.get().getName()); + } + } return R.ok(page); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java index cda2f44..bd8b676 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java @@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * <p> @@ -103,7 +104,9 @@ @ApiOperation(value = "技师列表", tags = {"技师列表-小程序"}) public R<TableDataInfo<TechnicianVO>> technicianListByShopId(@ApiParam("门店id") @RequestParam Long shopId,@ApiParam("技师姓名") String name) { startPage(); - return R.ok(getDataTable(technicianService.getTechnicianListByShopId(shopId,name))); + List<TechnicianVO> technicianListByShopId = technicianService.getTechnicianListByShopId(shopId, name); + TableDataInfo<TechnicianVO> dataTable = getDataTable(technicianListByShopId); + return R.ok(dataTable); } @GetMapping("/manage/list") diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/GeodesyUtil.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/GeodesyUtil.java similarity index 96% copy from ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/GeodesyUtil.java copy to ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/GeodesyUtil.java index 42e9578..a360115 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/GeodesyUtil.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/GeodesyUtil.java @@ -1,4 +1,4 @@ -package com.ruoyi.other.task; +package com.ruoyi.other.util; import com.ruoyi.common.core.utils.StringUtils; import org.gavaghan.geodesy.Ellipsoid; @@ -68,6 +68,6 @@ public static void main(String[] ages){ GeodesyUtil geodesyUtil = new GeodesyUtil(); - geodesyUtil.getDistance("115.481028,39.989643", "114.465302,40.004717"); + getDistance("115.481028,39.989643", "114.465302,40.004717"); } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/tencentMap/TencentMapUtil.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/tencentMap/TencentMapUtil.java new file mode 100644 index 0000000..61dd2db --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/tencentMap/TencentMapUtil.java @@ -0,0 +1,40 @@ +package com.ruoyi.other.util.tencentMap; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * 腾讯地图 + * @author zhibing.pu + * @Date 2024/12/19 9:37 + */ +@Slf4j +public class TencentMapUtil { + + private static String key = "NH7BZ-XNW6Z-IKUX7-TL3H2-UN6RO-KKFHQ"; + + /** + * 根据经纬度获取行政区划代码 + * @param lon 经度 + * @param lat 纬度 + * @param poi 是否返回周边poi + * @return + */ + public static String inverseGeographicalAnalysis(String lon, String lat, boolean poi){ + HttpRequest get = HttpUtil.createGet("https://apis.map.qq.com/ws/geocoder/v1/?location=" + lat + "," + lon + "&key=" + key + "&get_poi=" + (poi ? 1 : 0)); + HttpResponse execute = get.execute(); + JSONObject jsonObject = JSON.parseObject(execute.body()); + Integer status = jsonObject.getInteger("status"); + if(0 != status){ + log.error(jsonObject.getString("message")); + return null; + } + JSONObject result = jsonObject.getJSONObject("result"); + JSONObject ad_info = result.getJSONObject("ad_info"); + return ad_info.getString("adcode"); + } +} -- Gitblit v1.7.1