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