ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUserShop.java
@@ -1,27 +1,31 @@ package com.ruoyi.account.api.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; /** * @author zhibing.pu * @Date 2024/12/2 9:18 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_app_user_shop") @ApiModel(value="AppUser对象", description="") public class AppUserShop implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.AUTO) private Long id; private Long appUserId; private Long shopId; public class AppUserShop { /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 用户id */ @TableField("app_user_id") private Long appUserId; /** * 门店id */ @TableField("shop_id") private Integer shopId; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
@@ -15,6 +15,11 @@ public R<Shop> getShopById(Integer id) { return R.fail("根据id获取门店信息失败:" + cause.getMessage()); } @Override public R<Shop> getShopByPhone(String phone) { return R.fail("根据店铺管理员电话获取门店数据失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java
@@ -23,4 +23,13 @@ */ @PostMapping("/shop/getShopById") R<Shop> getShopById(@RequestParam("id") Integer id); /** * 根据店铺管理员电话获取门店数据 * @param phone * @return */ @PostMapping("/shop/getShopByPhone") R<Shop> getShopByPhone(@RequestParam("phone") String phone); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -115,7 +115,7 @@ /** * 角色类型 1=平台 2=公司 3=门店 4=修理厂 */ @ApiModelProperty(value = "角色类型 1=平台 2=合作商") @ApiModelProperty(value = "角色类型 1=平台 2=门店") private Integer roleType; @Excel(name = "密码修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) @@ -131,13 +131,9 @@ @TableField("forbidden_remark") private String forbiddenRemark; @ApiModelProperty(value = "充电站") @TableField(exist = false) private List<String> siteNames; @ApiModelProperty(value = "充电站id", required = true) @TableField(exist = false) private List<Integer> siteIds; @ApiModelProperty(value = "前端用户id") @TableField("app_user_id") private Long appUserId; @ApiModelProperty(value = "角色") @TableField(exist = false) @@ -386,25 +382,12 @@ this.roleId = roleId; } public List<String> getSiteNames() { return siteNames; public Long getAppUserId() { return appUserId; } public void setSiteNames(List<String> siteNames) { this.siteNames = siteNames; } public List<String> getRoleNames() { return roleNames; } public List<Integer> getSiteIds() { return siteIds; } public void setSiteIds(List<Integer> siteIds) { this.siteIds = siteIds; public void setAppUserId(Long appUserId) { this.appUserId = appUserId; } public void setRoleNames(List<String> roleNames) { ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
@@ -73,6 +73,11 @@ public R resetPassword(SysUser user) { return R.fail("重置用户密码失败:" + cause.getMessage()); } @Override public R saveShopUser(SysUser user) { return R.fail("新增加门店员工账号数据失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
@@ -88,4 +88,14 @@ */ @PostMapping("/user/resetPassword") R resetPassword(@RequestBody SysUser user); /** * 新增加门店员工账号数据 * @param user * @return */ @PostMapping("/user/saveShopUser") R saveShopUser(@RequestBody SysUser user); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/UserShop.java
New file @@ -0,0 +1,31 @@ package com.ruoyi.system.api.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * @author zhibing.pu * @Date 2024/12/2 9:36 */ @Data @TableName("t_user_shop") public class UserShop { /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 用户id */ @TableField("user_id") private Integer userId; /** * 门店id */ @TableField("shop_id") private Integer shopId; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -15,6 +15,7 @@ import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.UserShop; import com.ruoyi.system.api.query.ChangeUserQuery; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.query.GetSysUserList; @@ -64,6 +65,9 @@ @Resource private ISysUserRoleService sysUserRoleService; @Resource private UserShopService userShopService; @@ -528,4 +532,39 @@ public SysUser getSysUserById(@RequestParam("userId") Long userId){ return userService.getById(userId); } /** * 保存门店员工管理后台账号 * @param user * @return */ @ResponseBody @PostMapping("/saveShopUser") public R saveShopUser(@RequestBody SysUser user){ Integer shopId = user.getObjectId(); 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){ user.setObjectId(null); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); userService.save(user); //添加用户角色数据 SysUserRole userRole = new SysUserRole(); 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(); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserShopMapper.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.api.model.UserShop; /** * @author zhibing.pu * @Date 2024/12/2 9:38 */ public interface UserShopMapper extends BaseMapper<UserShop> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/UserShopService.java
New file @@ -0,0 +1,11 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.model.UserShop; /** * @author zhibing.pu * @Date 2024/12/2 9:39 */ public interface UserShopService extends IService<UserShop> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserShopServiceImpl.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.model.UserShop; import com.ruoyi.system.mapper.UserShopMapper; import com.ruoyi.system.service.UserShopService; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2024/12/2 9:39 */ @Service public class UserShopServiceImpl extends ServiceImpl<UserShopMapper, UserShop> implements UserShopService { } ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/UserShopMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.UserShopMapper"> </mapper> ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.account.controller; import org.springframework.web.bind.annotation.*; /** * @author zhibing.pu * @Date 2024/12/2 9:21 */ @RestController @RequestMapping("/appUserShop") public class AppUserShopController { } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/AppUserShopMapper.java
@@ -3,5 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.account.api.model.AppUserShop; /** * @author zhibing.pu * @Date 2024/12/2 9:20 */ public interface AppUserShopMapper extends BaseMapper<AppUserShop> { } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserShopService.java
@@ -3,5 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.AppUserShop; /** * @author zhibing.pu * @Date 2024/12/2 9:20 */ public interface AppUserShopService extends IService<AppUserShop> { } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -2,15 +2,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.AppUserShop; import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.service.AppUserShopService; import com.ruoyi.account.util.weChat.WeChatUtil; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.Shop; import com.ruoyi.other.api.feignClient.ShopClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; import org.springframework.stereotype.Service; @@ -40,6 +46,20 @@ @Resource private RedisService redisService; @Resource private ShopClient shopClient; @Resource private AppUserShopService appUserShopService; @Resource private SysUserClient sysUserClient; /** @@ -232,6 +252,33 @@ // appUser.setDistrict(); // appUser.setDistrictCode(); this.save(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); ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserShopServiceImpl.java
@@ -6,6 +6,10 @@ import com.ruoyi.account.service.AppUserShopService; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2024/12/2 9:21 */ @Service public class AppUserShopServiceImpl extends ServiceImpl<AppUserShopMapper, AppUserShop> implements AppUserShopService { } ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserShopMapper.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.account.mapper.AppUserShopMapper"> </mapper> ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -129,5 +129,18 @@ Shop shop = shopService.getById(id); return R.ok(shop); } /** * 根据店铺管理员电话获取门店数据 * @param phone * @return */ @ResponseBody @PostMapping("/getShopByPhone") public R<Shop> getShopByPhone(@RequestParam("phone") String phone){ Shop one = shopService.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getPhone, phone).eq(Shop::getDelFlag, 0).eq(Shop::getStatus, 1)); return R.ok(one); } }