package com.ishop.merchant.platform; import com.iplatform.base.Constants; import com.iplatform.base.service.RoleServiceImpl; import com.iplatform.base.util.TextUtils; import com.iplatform.core.BeanContextAware; import com.iplatform.model.po.S_role; import com.iplatform.model.po.S_user_core; import com.iplatform.model.po.S_user_login; import com.ishop.merchant.BaseController; import com.ishop.merchant.pojo.UserSearchParam; import com.ishop.model.po.EbUser; import com.ishop.model.request.UserAssignTagRequest; import com.ishop.model.request.UserBalanceRequest; import com.ishop.model.vo.RoleMerchantVo; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.KeyValue; import com.walker.infrastructure.utils.PhoneNumberUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.web.ResponseValue; import com.walker.web.UserOnlineProvider; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping("/platform/user") public class UserRegisterController extends BaseController { @RequestMapping(value = "/tag", method = RequestMethod.POST) public ResponseValue setUserTag(@RequestBody UserAssignTagRequest request){ if(request == null || StringUtils.isEmpty(request.getTagIds()) || StringUtils.isEmpty(request.getIds())){ return ResponseValue.error("设置标签参数未提交"); } List userIds = TextUtils.stringToLongArrayByRegex(request.getIds(), StringUtils.DEFAULT_SPLIT_SEPARATOR); // 更新用户标签 this.getUserRegisterService().execBatchTag(userIds, request.getTagIds()); // 更新用户缓存 this.batchUpdateEbUserCache(userIds); return ResponseValue.success(); } /** * 保存移动端,作为商户管理角色设置。 * @param request * @return * @date 2023-09-25 */ @RequestMapping(value = "/roles/merchant/save", method = RequestMethod.POST) public ResponseValue saveRegUserMerchantAdmin(@RequestBody RoleMerchantVo request){ if(request == null || StringUtils.isEmpty(request.getRoleId()) || request.getMerId() <= 0){ return ResponseValue.error("请设置管理角色信息"); } if(request.getUserId() <= 0){ return ResponseValue.error("用户信息错误,userId为空"); } long roleId = Long.parseLong(request.getRoleId()); this.getUserRegisterService().execRoleMerchantAdmin(request.getType(), roleId, request.getMerId(), request.getUserId()); // 1.更新用户缓存,2.删除用户登录缓存 S_user_core userCore = this.getUser(request.getUserId()); userCore.setType(request.getType()); userCore.setMer_id(request.getMerId()); this.getUserCacheProvider().updateUser(userCore); S_user_login user_login = this.getUserLoginCache().getUserLogin(userCore.getUser_name()); if(user_login == null){ logger.warn("移动端商户角色设置:登录缓存未查到用户信息,无法删除登录缓存。user = {}", userCore.getUser_name()); return ResponseValue.success(); } String uuid = user_login.getUuid(); UserOnlineProvider userOnlineProvider = BeanContextAware.getBeanByType(UserOnlineProvider.class); userOnlineProvider.removeUserPrincipal(uuid); logger.debug("删除用户登录缓存:uuid={}", uuid); return ResponseValue.success(); } @RequestMapping(value = "/roles/merchant", method = RequestMethod.GET) public ResponseValue showUserMerchantRole(Long id){ if(id == null || id <= 0){ return ResponseValue.error("id is required!"); } List roleList = BeanContextAware.getBeanByType(RoleServiceImpl.class).queryUserRoleList(id); S_user_core user = this.getUser(id); RoleMerchantVo vo = new RoleMerchantVo(); vo.setType(user.getType()); vo.setMerId(user.getMer_id()); vo.setUserId(id); if(!StringUtils.isEmptyList(roleList)){ // 移动端只会配置一个角色。 vo.setRoleId(String.valueOf(roleList.get(0).getRole_id())); } else { vo.setRoleId(StringUtils.EMPTY_STRING); } return ResponseValue.success(vo); } /** * 在平台端,管理用户,可以设置移动端用户为商户管理员,看到一些管理功能界面。 *
     *     1) 设置移动端用户属于某个角色,如:明运管理员等
     *     2)
     * 
* @return * @date 2023-09-25 */ @RequestMapping(value = "/roles", method = RequestMethod.GET) public ResponseValue listRole(){ List roleList = this.getUserService().select(new S_role()); List data = new ArrayList<>(8); if(!StringUtils.isEmptyList(roleList)){ for(S_role role : roleList){ data.add(new KeyValue(role.getRole_id().toString(), role.getRole_name())); } } return ResponseValue.success(data); } @RequestMapping(value = "/list", method = RequestMethod.GET) public ResponseValue list(UserSearchParam param){ // if(param == null){ // return ResponseValue.error(Constants.ERROR_ARGUMENT); // } GenericPager pager = this.getUserRegisterService().queryPageUserList(param); if(!StringUtils.isEmptyList(pager.getDatas())){ for(EbUser e : pager.getDatas()){ if(StringUtils.isNotEmpty(e.getAvatar())){ e.setAvatar(this.getCdnUrl() + e.getAvatar()); } } } return ResponseValue.success(pager); } @RequestMapping(value = "/detail", method = RequestMethod.GET) public ResponseValue detail(Long id){ if(id == null || id.longValue() <= 0){ return ResponseValue.error(Constants.ERROR_ARGUMENT); } EbUser user = this.getUserRegCache().get(id); if(user == null){ return ResponseValue.error("无效用户"); } if(user.getSpreadUid() != null && user.getSpreadUid().longValue() > 0){ user.setParameterString("spreadName", this.getUserRegisterName(user.getSpreadUid())); } // 手机号脱敏,放在另外属性中 if(StringUtils.isNotEmpty(user.getPhone())){ user.setParameterString("userPhone", PhoneNumberUtils.maskMobile(user.getPhone())); } return ResponseValue.success(user); } /** * 用户后台充值,变动余额。 * @param request * @return * @date 2023-09-06 */ @RequestMapping(value = "/operate/balance", method = RequestMethod.GET) public ResponseValue userBalance(UserBalanceRequest request){ if(request == null || request.getUid() == null){ return ResponseValue.error(Constants.ERROR_ARGUMENT); } if(request.getMoney() == null || request.getMoney().doubleValue() == 0){ return ResponseValue.error("充值金额为0"); } EbUser user = this.getUserRegCache().get(request.getUid()); if(user == null){ return ResponseValue.error("用户不存在"); } if (user.getIsLogoff().intValue() == 1) { return ResponseValue.error("已注销用户不可操作"); } // 减少时要判断小于0的情况,添加时判断是否超过数据限制 if (request.getOperateType().equals(com.ishop.merchant.Constants.OPERATION_TYPE_SUBTRACT)) { if ((user.getNowMoney().doubleValue() - request.getMoney().doubleValue()) < 0) { return ResponseValue.error("余额扣减后不能小于0"); } } else if(request.getOperateType().equals(com.ishop.merchant.Constants.OPERATION_TYPE_ADD)){ if((user.getNowMoney().doubleValue() + request.getMoney().doubleValue()) > 99999999.99){ return ResponseValue.error("余额添加后后不能大于99999999.99"); } } else { throw new UnsupportedOperationException("不支持的操作类型:" + request.getOperateType()); } this.getUserRegisterService().execModifyUserBalance(request.getUid(), request.getMoney().doubleValue(), request.getOperateType(), user.getNowMoney().doubleValue()); return ResponseValue.success(); } }