diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantBUserController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantBUserController.java index bf6af813f..e7f619258 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantBUserController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantBUserController.java @@ -1,10 +1,16 @@ package com.iformall.controller.basic; +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxMerchantBUser; +import com.iformall.domain.po.base.BaseEntity; import com.iformall.service.WxMerchantBUserService; import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +25,21 @@ public class WxMerchantBUserController extends BaseController { @Autowired private WxMerchantBUserService wxMerchantBUserService; + @ApiOperation("分页列表接口") + @GetMapping("listVo") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "商户-列表") + public ResultData listVo(@ModelAttribute WxMerchantBUser wxMerchantBUser, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxMerchantBUserController::list"); + if (null == wxMerchantBUser) wxMerchantBUser = new WxMerchantBUser(); + wxMerchantBUser.updateTenantInfo(getTenantInfo()); + wxMerchantBUser.setSortColumns(BaseEntity.SortField.CreateDate_DESC); + final PageInfo page = wxMerchantBUserService.listAsPage(wxMerchantBUser, pageNum, pageSize); + return new ResultData(page); + } + @ApiOperation("手机号是否存在") @GetMapping("/hasphone") @ApiImplicitParam(name = "phone", value = "phone", dataType = "String", paramType = "query", required = true) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index c4fa93c1f..a7c359f88 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -47,6 +47,9 @@ public class WxMerchant extends TenantEntity { @TableField(exist = false) private List users; + @TableField(exist = false) + private List otherMerchantUsers; + @TableField(exist = false) private Long rentContractId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java index a0362a648..b02bcb433 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java @@ -1,13 +1,16 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import com.iformall.utils.Constant; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.StringUtils; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; @@ -28,6 +31,8 @@ public class WxMerchantBUser extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "商户id", name = "merchantId") private Long merchantId; @TableField(exist = false) + private String merchantName; + @TableField(exist = false) private List merchantIds; @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate") private Date createDate; @@ -47,9 +52,12 @@ public class WxMerchantBUser extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "是否是管理员", name = "isAdmin") private Integer isAdmin; - @io.swagger.annotations.ApiModelProperty(value = "可核销其他商户", name = "otherMerchant") + @io.swagger.annotations.ApiModelProperty(value = "json 可核销其他商户", name = "otherMerchant") private String otherMerchant; + @TableField(exist = false) + private String otherMerchantId; + @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "b用户ID", name = "buserId") private transient Long buserId; @@ -65,4 +73,13 @@ public class WxMerchantBUser extends TenantEntity { } return this.token; } + + public List getOtherMerchantIds(){ + if(StringUtils.isNotBlank(otherMerchant)){ + try{ + return JSONObject.parseArray(otherMerchant, String.class); + }catch(Exception e){} + } + return new ArrayList(); + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java index 3910709b6..5b8b805ee 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantBUserMapper.java @@ -4,6 +4,7 @@ import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.vo.WxMerchantBuInfoVo; +import org.apache.ibatis.annotations.Param; public interface WxMerchantBUserMapper extends CommonMapper { @@ -18,7 +19,8 @@ public interface WxMerchantBUserMapper extends CommonMapper findSelMerchantList(WxMerchantBUser wxMerchantBUser); WxMerchantBUser findByToken(String token); - - - + + int deleteOtherMerchant(@Param("tenantId")String tenantId, @Param("otherId")String otherId); + + int addOtherMerchant(@Param("tenantId")String tenantId, @Param("ids")List ids, @Param("otherId")String otherId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java index 07d9735d8..5086d55ee 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java @@ -7,22 +7,27 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxMsgValidationcode; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxMerchantBuInfoVo; import com.iformall.enums.EnumMerchantBUserStatus; +import com.iformall.enums.EnumMerchantStatus; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxMerchantBUserMapper; +import com.iformall.mapper.WxMerchantMapper; import com.iformall.mapper.WxMsgValidationcodeMapper; import com.iformall.service.WxMerchantBUserService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -37,6 +42,9 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { @Autowired WxAppinfoMapper wxAppinfoMapper; + @Autowired + WxMerchantMapper wxMerchantMapper; + @Autowired WxMerchantBUserMapper wxMerchantBUserMapper; @@ -45,7 +53,38 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { @Override public PageInfo listAsPage(WxMerchantBUser record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantBUserMapper.findList(record)); + //查询有效门店的员工 + WxMerchant merchantQ1 = new WxMerchant(); + merchantQ1.updateTenantInfo(record); + merchantQ1.setName(record.getMerchantName()); + merchantQ1.setStatus(EnumMerchantStatus.VALID.getCode()); + List merchantIdList = wxMerchantMapper.findIdList(merchantQ1); + if(merchantIdList == null || merchantIdList.isEmpty()){ + return new PageInfo(); + } + record.setMerchantIds(merchantIdList); + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantBUserMapper.findList(record)); + List list = pageInfo.getList(); + if(list != null && !list.isEmpty()){ + Map merchantSimpleMap = new HashMap(); + if (null != merchantIdList && merchantIdList.size() > 0) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(record); + merchantQ.setIds(merchantIdList); + List merchantList = wxMerchantMapper.findIdNameList(merchantQ); + if (null != merchantList) { + for (int k = 0 ; k < merchantList.size() ; k++) { + WxMerchant m = merchantList.get(k); + merchantSimpleMap.put(m.getId(), m.getName()); + } + } + } + for (WxMerchantBUser bUser:list) { + bUser.setMerchantName(merchantSimpleMap.get(bUser.getMerchantId())); + } + } + + return pageInfo; } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 3d252494c..9bbbf5e75 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -323,6 +323,14 @@ public class WxMerchantServiceImpl implements WxMerchantService { List userList = wxMerchantBUserMapper.findList(wxMerchantBUser); wxMerchant.setUsers(userList); + if(EnumYesOrNo.YES.getCode().equals(wxMerchant.getIsAdmin())){ + WxMerchantBUser otherQ = new WxMerchantBUser(); + otherQ.setOtherMerchantId(wxMerchant.getId().toString()); + otherQ.setStatus(EnumMerchantBUserStatus.VALID.getCode()); + List otherUserList = wxMerchantBUserMapper.findList(otherQ); + wxMerchant.setOtherMerchantUsers(otherUserList); + } + //分账信息 WxProfitSharingReceiver receiver = wxProfitSharingReceiverService.findReceiver(wxMerchant,EnumProfitSharingType.PROFIT_SHARING_TYPE_WECHAT); if (receiver != null) { @@ -815,6 +823,9 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchantBUser.setStatus(EnumMerchantBUserStatus.INVALID.getCode()); wxMerchantBUserMapper.updateById(wxMerchantBUser); } + //删除关联的其他门店用户 + wxMerchantBUserMapper.deleteOtherMerchant(wxMerchant.getTenantId(),wxMerchant.getId().toString()); + final IdWorker idWorker = IdWorker.get(); //保存商户关联用户 for (WxMerchantBUser user : users) { @@ -839,6 +850,13 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchantBUserMapper.updateById(user); } } + if(EnumYesOrNo.YES.getCode().equals(wxMerchant.getIsAdmin())){ + List otherMerchantUsers = wxMerchant.getOtherMerchantUsers(); + if(otherMerchantUsers != null && !otherMerchantUsers.isEmpty()){ + List ids = otherMerchantUsers.stream().map(u -> u.getId()).collect(Collectors.toList()); + wxMerchantBUserMapper.addOtherMerchant(wxMerchant.getTenantId(),ids,wxMerchant.getId().toString()); + } + } return new ResultData(Result.SUCCESS, "账号操作成功"); } catch (Exception e) { logger.error("db failed: 账号操作失败, e:" + e.getMessage()); diff --git a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml index 25e992bdd..e122514fb 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml @@ -83,6 +83,9 @@ and `is_admin` = #{isAdmin} + + and json_search(other_merchant, 'one', #{otherMerchantId}) IS NOT NULL; + and id in @@ -171,5 +174,20 @@ where `token` = #{token} + + update wx_merchant_b_user set other_merchant = JSON_REMOVE(other_merchant, replace(json_search(other_merchant, 'one', #{otherId}), '"', '')) + where `tenant_id` = #{tenantId} + and json_search(other_merchant, 'one', #{otherId}) IS NOT NULL; + + + + update wx_merchant_b_user set other_merchant = json_array_append(coalesce(other_merchant,'[]'), '$', #{otherId}) + where `tenant_id` = #{tenantId} + and id in + + #{idItem} + + and json_search(other_merchant, 'one', #{otherId}) IS NULL; +