Browse Source

商家管理

FengChaoYu 1 week ago
parent
commit
980742a8ea

+ 11 - 0
src/main/java/com/gree/mall/contest/bean/merchant/MerchantAddBean.java

@@ -0,0 +1,11 @@
+package com.gree.mall.contest.bean.merchant;
+
+import com.gree.mall.contest.plus.entity.Merchant;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class MerchantAddBean extends Merchant {
+
+}

+ 11 - 0
src/main/java/com/gree/mall/contest/bean/merchant/MerchantBean.java

@@ -0,0 +1,11 @@
+package com.gree.mall.contest.bean.merchant;
+
+import com.gree.mall.contest.plus.entity.Merchant;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class MerchantBean extends Merchant {
+
+}

+ 53 - 0
src/main/java/com/gree/mall/contest/bean/merchant/MerchantRegionVO.java

@@ -0,0 +1,53 @@
+package com.gree.mall.contest.bean.merchant;
+
+import com.gree.mall.contest.annotation.ZfireField;
+import com.gree.mall.contest.enums.merchant.MerchantStatusEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+@ZfireField(tbName = "a")
+@Data
+public class MerchantRegionVO {
+
+    @ZfireField(hide = true)
+    @Schema(description = "id")
+    private String id;
+    @Schema(description = "商家编号")
+    private String number;
+    @Schema(description = "商家名称")
+    private String name;
+    @Schema(description = "负责人")
+    private String chargeName;
+    @Schema(description = "负责人电话")
+    private String chargeMobile;
+    @ZfireField(tbName = "b")
+    @Schema(description = "主营分类")
+    private String serviceCategoryName;
+
+    @Schema(description = "状态")
+    private MerchantStatusEnum status;
+
+    @ZfireField(tbName = "b")
+    @Schema(description = "省份")
+    private String province;
+    @ZfireField(tbName = "b")
+    @Schema(description = "城市")
+    private String city;
+    @ZfireField(tbName = "b")
+    @Schema(description = "区县")
+    private String area;
+    @Schema(description = "创建人")
+    private String createBy;
+    @Schema(description = "创建时间")
+    private Date createTime;
+    @Schema(description = "修改人")
+    private String updateBy;
+    @Schema(description = "修改时间")
+    private String updateTime;
+
+    @ZfireField(hide = true, tbName = "b")
+    @Schema(description = "城市id")
+    private String cityId;
+}

+ 77 - 0
src/main/java/com/gree/mall/contest/bean/merchant/MerchantVO.java

@@ -0,0 +1,77 @@
+package com.gree.mall.contest.bean.merchant;
+
+import com.gree.mall.contest.annotation.ZfireField;
+import com.gree.mall.contest.enums.IsEnum;
+import com.gree.mall.contest.enums.merchant.MerchantStatusEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ZfireField(tbName = "a")
+@Data
+public class MerchantVO {
+
+    @Schema(description = "服务商编号")
+    private String id;
+    @Schema(description = "服务商名称")
+    private String name;
+    @Schema(description = "状态")
+    private MerchantStatusEnum status;
+    @Schema(description = "负责人")
+    private String chargeName;
+    @Schema(description = "负责人电话")
+    private String chargeMobile;
+    @Schema(description = "办公电话")
+    private String officeMobile;
+    @Schema(description = "税号")
+    private String taxNo;
+    @Schema(description = "是否独立法人")
+    private IsEnum isLegal;
+    @Schema(description = "法人代表")
+    private String legalName;
+    @Schema(description = "法人身份证")
+    private String legalIdcard;
+    @Schema(description = "法人手机号")
+    private String legalMobile;
+    @Schema(description = "所在省份")
+    private String province;
+    @Schema(description = "所在市")
+    private String city;
+    @Schema(description = "区县")
+    private String area;
+    @Schema(description = "街道")
+    private String street;
+    @Schema(description = "地址")
+    private String address;
+    @Schema(description = "营业时间开始")
+    private String startTime;
+    @Schema(description = "营业时间结束")
+    private String endTime;
+
+    @ZfireField(ignoreSelect = true,isQuery = false)
+    @Schema(description = "保证金")
+    private BigDecimal marginAmount;
+    @ZfireField(ignoreSelect = true,isQuery = false)
+    @Schema(description = "保证金缴纳日期")
+    private Date marginTime;
+
+
+    @Schema(description = "开户银行")
+    private String bank;
+    @Schema(description = "开户行号")
+    private String bankNo;
+    @Schema(description = "银行账号")
+    private String bankAccount;
+    @Schema(description = "经营类目")
+    private String serviceCategoryName;
+    @Schema(description = "创建人")
+    private String createBy;
+    @Schema(description = "创建时间")
+    private Date createTime;
+    @Schema(description = "修改人")
+    private String updateBy;
+    @Schema(description = "修改时间")
+    private Date updateTime;
+}

+ 23 - 0
src/main/java/com/gree/mall/contest/commonmapper/CommonMapper.java

@@ -8,6 +8,8 @@ import com.gree.mall.contest.bean.common.CarouselMapVO;
 import com.gree.mall.contest.bean.manage.NotifyRecordVO;
 import com.gree.mall.contest.bean.manage.NotifyVO;
 import com.gree.mall.contest.bean.manage.UserTopPopVO;
+import com.gree.mall.contest.bean.merchant.MerchantRegionVO;
+import com.gree.mall.contest.bean.merchant.MerchantVO;
 import com.gree.mall.contest.bean.merchant.WebsitApplyVO;
 import com.gree.mall.contest.bean.zfire.ZfireParamBean;
 import com.gree.mall.contest.plus.entity.UserTopPop;
@@ -21,6 +23,7 @@ public interface CommonMapper {
 
     /**
      * 友情链接
+     *
      * @param page
      * @param zfireParamBean
      * @return
@@ -29,6 +32,7 @@ public interface CommonMapper {
 
     /**
      * 轮播图列表
+     *
      * @param page
      * @param zfireParamBean
      * @return
@@ -37,6 +41,7 @@ public interface CommonMapper {
 
     /**
      * 通知公告列表
+     *
      * @param page
      * @param zfireParamBean
      * @return
@@ -45,6 +50,7 @@ public interface CommonMapper {
 
     /**
      * 通知记录列表
+     *
      * @param page
      * @param zfireParamBean
      * @return
@@ -53,6 +59,7 @@ public interface CommonMapper {
 
     /**
      * 首页弹窗配置列表
+     *
      * @param page
      * @param zfireParamBean
      * @return
@@ -69,4 +76,20 @@ public interface CommonMapper {
      * @return
      */
     IPage<WebsitApplyVO> pageApply(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    /**
+     * 商家列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<MerchantVO> MerchantPage(Page page, @Param("ex") ZfireParamBean zfireParamBean, @Param("serviceProviderId") String serivceProviderId);
+
+    /**
+     * 服务商服务街道列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<MerchantRegionVO> listMerchantRegion(Page page,@Param("ex") ZfireParamBean zfireParamBean,@Param("serviceProviderId") String serivceProviderId);
 }

+ 118 - 0
src/main/java/com/gree/mall/contest/controller/pc/merchant/MerchantController.java

@@ -0,0 +1,118 @@
+package com.gree.mall.contest.controller.pc.merchant;
+
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.contest.annotation.ZfireList;
+import com.gree.mall.contest.bean.merchant.MerchantAddBean;
+import com.gree.mall.contest.bean.merchant.MerchantBean;
+import com.gree.mall.contest.bean.merchant.MerchantRegionVO;
+import com.gree.mall.contest.bean.merchant.MerchantVO;
+import com.gree.mall.contest.bean.zfire.ZfireParamBean;
+import com.gree.mall.contest.helper.ResponseHelper;
+import com.gree.mall.contest.logic.merchant.MerchantLogic;
+import com.gree.mall.contest.utils.zfire.FieldUtils;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RequiredArgsConstructor
+@RestController
+@Tag(name = "商家管理API", description = "商家管理API")
+@RequestMapping("/pc/service/provider")
+public class MerchantController {
+
+    private final MerchantLogic merchantLogic;
+
+    @ZfireList
+    @PostMapping("/list")
+    @Operation(summary = "列表")
+    public ResponseHelper<IPage<MerchantVO>> list(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<MerchantVO> page = merchantLogic.list(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<MerchantVO>() {});
+    }
+
+    @PostMapping("/list/export")
+    @Operation(summary = "导出")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<MerchantVO> baseVOIPage = merchantLogic.list(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(baseVOIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @ZfireList
+    @PostMapping("/region/list")
+    @Operation(summary = "商家服务区列表")
+    public ResponseHelper<IPage<MerchantRegionVO>> list2(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<MerchantRegionVO> page = merchantLogic.list2(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<MerchantRegionVO>() {});
+    }
+
+    @PostMapping("/region/list/export")
+    @Operation(summary = "导出")
+    public void listExport2(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<MerchantRegionVO> page = merchantLogic.list2(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(page.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+
+    @PostMapping("/add")
+    @Operation(summary = "新增")
+    public ResponseHelper<MerchantBean> add(
+            @RequestBody MerchantAddBean merchantAddBean
+    ) {
+        MerchantBean merchantBean = merchantLogic.add(merchantAddBean);
+        return ResponseHelper.success(merchantBean);
+    }
+
+
+    @PostMapping("/update")
+    @Operation(summary = "修改")
+    public ResponseHelper update(
+            @RequestBody MerchantAddBean merchantAddBean
+    ) {
+        merchantLogic.update(merchantAddBean);
+        return ResponseHelper.success();
+    }
+
+
+    @PostMapping("/delete")
+    @Operation(summary = "删除")
+    public ResponseHelper delete(
+            @RequestParam String id
+    ) {
+        merchantLogic.delete(id);
+        return ResponseHelper.success();
+    }
+
+
+    @PostMapping("/detail")
+    @Operation(summary = "详情")
+    public ResponseHelper<MerchantBean> detail(
+            @RequestParam String id
+    ) {
+        MerchantBean detail = merchantLogic.merchantDetail(id);
+        return ResponseHelper.success(detail);
+    }
+
+
+
+}

+ 29 - 0
src/main/java/com/gree/mall/contest/enums/merchant/MerchantStatusEnum.java

@@ -0,0 +1,29 @@
+package com.gree.mall.contest.enums.merchant;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.contest.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum MerchantStatusEnum implements BaseEnum, IEnum<Integer> {
+    A("0", "无效"),
+    B("1", "有效"),
+    C("2", "终止合作"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+
+
+    @Override
+    public Integer getValue() {
+        return Integer.parseInt(key);
+    }
+}

+ 15 - 1
src/main/java/com/gree/mall/contest/logic/common/CommonLogic.java

@@ -10,6 +10,7 @@ import com.gree.mall.contest.bean.user.CurrentCompanyWechat;
 import com.gree.mall.contest.commonmapper.AdminMapper;
 import com.gree.mall.contest.enums.StateEnum;
 import com.gree.mall.contest.enums.admin.RoleTypeEnum;
+import com.gree.mall.contest.enums.admin.UpdateLogRemarkEnum;
 import com.gree.mall.contest.exception.RemoteServiceException;
 import com.gree.mall.contest.plus.entity.*;
 import com.gree.mall.contest.plus.service.*;
@@ -54,7 +55,7 @@ public class CommonLogic {
     private final OSSUtil ossUtil;
     private final SysConfigService sysConfigService;
     private final WxSceneService wxSceneService;
-
+    private final UpdateLogLogic updateLogLogic;
     private final LbsAmapService lbsAmapService;
     private final WxSceneDetailService wxSceneDetailService;
     //高德的webkey
@@ -432,4 +433,17 @@ public class CommonLogic {
         List<WxSceneDetail> list = wxSceneDetailService.lambdaQuery().eq(WxSceneDetail::getWxSceneId, wxSceneId).list();
         return list;
     }
+
+    /**
+     * 新增修改日志
+     * @param objId 各业务数据主键id
+     * @param content  操作内容(例如:从 广州众炬 修改为 广州格力)
+     * @param updateLogRemarkEnum 备注业务模块,自行增加枚举类型
+     */
+    public void addUpdateLog(String objId, String content, UpdateLogRemarkEnum updateLogRemarkEnum){
+        if(StringUtils.isBlank(content)){
+            return;
+        }
+        updateLogLogic.add(objId,"编辑",content,updateLogRemarkEnum);
+    }
 }

+ 54 - 0
src/main/java/com/gree/mall/contest/logic/common/UpdateLogLogic.java

@@ -0,0 +1,54 @@
+package com.gree.mall.contest.logic.common;
+
+import com.gree.mall.contest.enums.admin.UpdateLogRemarkEnum;
+import com.gree.mall.contest.plus.entity.UpdateLog;
+import com.gree.mall.contest.plus.service.UpdateLogService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 修改日志
+ * @author :lijh
+ * @description:TODO
+ * @date :2024/3/11 15:33
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class UpdateLogLogic {
+
+    private final UpdateLogService updateLogService;
+
+    /**
+     * 新增修改日志
+     * @param objId 各业务数据主键id
+     * @param type 操作类型(例如:更改公司名称)
+     * @param content  操作内容(例如:从 广州众炬 修改为 广州格力)
+     * @param updateLogRemarkEnum 备注业务模块,自行增加枚举类型
+     */
+    public void add(String objId, String type, String content, UpdateLogRemarkEnum updateLogRemarkEnum){
+        UpdateLog updateLog = new UpdateLog();
+        updateLog.setObjId(objId);
+        updateLog.setType(type);
+        updateLog.setContent(content);
+        updateLog.setRemark(updateLogRemarkEnum.getRemark());
+        updateLog.insert();
+    }
+
+    /**
+     * 修改日志列表
+     * @param objId
+     * @return
+     */
+    public List<UpdateLog> list(String objId,String remark){
+       return updateLogService.lambdaQuery().eq(StringUtils.isNotEmpty(objId),UpdateLog::getObjId,objId)
+               .eq(StringUtils.isNotEmpty(remark),UpdateLog::getRemark,remark)
+               .orderByDesc(UpdateLog::getCreateTime).list();
+    }
+
+
+}

+ 171 - 11
src/main/java/com/gree/mall/contest/logic/merchant/MerchantLogic.java

@@ -5,28 +5,29 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.contest.bean.admin.AdminUserCom;
-import com.gree.mall.contest.bean.merchant.WebsitApplyAdd;
-import com.gree.mall.contest.bean.merchant.WebsitApplyDetail;
-import com.gree.mall.contest.bean.merchant.WebsitApplyVO;
+import com.gree.mall.contest.bean.merchant.*;
 import com.gree.mall.contest.bean.zfire.ZfireParamBean;
 import com.gree.mall.contest.commonmapper.CommonMapper;
+import com.gree.mall.contest.constant.Constant;
+import com.gree.mall.contest.enums.admin.RoleTypeEnum;
+import com.gree.mall.contest.enums.admin.UpdateLogRemarkEnum;
+import com.gree.mall.contest.enums.base.BaseEnum;
+import com.gree.mall.contest.enums.merchant.MerchantStatusEnum;
 import com.gree.mall.contest.exception.RemoteServiceException;
 import com.gree.mall.contest.logic.SMSLogic;
 import com.gree.mall.contest.logic.common.CommonLogic;
-import com.gree.mall.contest.plus.entity.GoodsCategory;
-import com.gree.mall.contest.plus.entity.WebsitApply;
-import com.gree.mall.contest.plus.entity.WebsitApplyArea;
-import com.gree.mall.contest.plus.entity.WebsitApplyLog;
-import com.gree.mall.contest.plus.service.GoodsCategoryService;
-import com.gree.mall.contest.plus.service.WebsitApplyAreaService;
-import com.gree.mall.contest.plus.service.WebsitApplyLogService;
-import com.gree.mall.contest.plus.service.WebsitApplyService;
+import com.gree.mall.contest.plus.entity.*;
+import com.gree.mall.contest.plus.service.*;
+import com.gree.mall.contest.utils.CommonUtils;
+import com.gree.mall.contest.utils.MD5Utils;
 import com.gree.mall.contest.utils.zfire.FieldUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -41,6 +42,9 @@ public class MerchantLogic {
     private final WebsitApplyAreaService websitApplyAreaService;
     private final GoodsCategoryService goodsCategoryService;
     private final WebsitApplyLogService websitApplyLogService;
+    private final MerchantService merchantService;
+    private final AdminRoleService adminRoleService;
+    private final AdminUserService adminUserService;
 
     public Boolean register(String mobile, String code) {
         smsLogic.checkSmsCode(mobile, code, "BIND");
@@ -121,4 +125,160 @@ public class MerchantLogic {
         websitApplyLog.setRemark(remark);
         websitApplyLog.insert();
     }
+
+    /**
+     * 商家列表
+     *
+     * @param zfireParamBean
+     * @return
+     */
+    public IPage<MerchantVO> list(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        zfireParamBean = FieldUtils.supplyParam(zfireParamBean, MerchantVO.class);
+        IPage<MerchantVO> page = commonMapper.MerchantPage(zfireParamBean.page(), zfireParamBean, adminUser.getServiceProviderId());
+        return page;
+    }
+
+    public IPage<MerchantRegionVO> list2(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.supplyParam(zfireParamBean, MerchantRegionVO.class);
+
+        List<String> types = new ArrayList<>();
+        types.add("C");
+        types.add("E");
+
+        String providerId = types.contains(adminUser.getAdminWebsit().getType()) ? null : adminUser.getServiceProviderId();
+        IPage<MerchantRegionVO> page = commonMapper.listMerchantRegion(zfireParamBean.page(),
+                zfireParamBean, providerId);
+        return page;
+    }
+
+    /**
+     * 商家保存
+     * @param merchantAddBean
+     */
+    @Transactional
+    public MerchantBean add(MerchantAddBean merchantAddBean) {
+        if(StringUtils.isBlank(merchantAddBean.getNumber())){
+            throw new RemoteServiceException("商家编号必填");
+        }
+
+        String id = merchantAddBean.getNumber().toUpperCase();
+
+        merchantAddBean.setId(id);
+
+        //判断是否存在
+        Merchant old = merchantService.getById(merchantAddBean.getNumber());
+        if(old != null){
+            throw new RemoteServiceException("编号【"+old.getId()+"】已存在");
+        }
+        merchantAddBean.setId(merchantAddBean.getNumber());
+        merchantAddBean.insert();
+        //角色
+        AdminRole adminRole = adminRoleService.getById(Constant.SERVICE_PROVIDER.ROLE_ID);
+        if(adminRole == null){
+            throw new RemoteServiceException("请先配置服务商角色");
+        }
+        //判断负责人手机号是否存在
+//        Integer count = adminUserService.lambdaQuery().eq(AdminUser::getLinkPhone, serviceProvider.getChargeMobile()).count();
+//        if(count > 0){
+//            throw new RemoteServiceException("负责人手机号已存在,请更换");
+//        }
+        //生成部门
+        AdminWebsit adminWebsit = new AdminWebsit();
+        adminWebsit.setWebsitId(merchantAddBean.getId());
+        adminWebsit.setName(merchantAddBean.getName());
+        adminWebsit.setParentId(Constant.SERVICE_PROVIDER.PARENT_WEBSIT_ID);
+        adminWebsit.setType(RoleTypeEnum.B.getCode());
+        adminWebsit.insert();
+        //生成账号
+        AdminUser adminUser = new AdminUser();
+        adminUser.setUserName(merchantAddBean.getChargeMobile());
+        adminUser.setNickName(merchantAddBean.getName());
+        adminUser.setRoleId(adminRole.getAdminRoleId());
+        adminUser.setRoleName(adminRole.getName());
+        adminUser.setType(adminWebsit.getType());
+        adminUser.setUserName(merchantAddBean.getId());
+        adminUser.setPassword(MD5Utils.md5("123456"));
+        adminUser.setAdminWebsitId(adminWebsit.getWebsitId());
+        adminUser.setLinkName(merchantAddBean.getChargeName());
+        adminUser.setLinkPhone(merchantAddBean.getChargeMobile());
+        adminUser.setAddress(merchantAddBean.getAddress());
+        adminUser.setServiceProviderId(adminWebsit.getWebsitId());
+        adminUser.insert();
+
+        return merchantDetail(merchantAddBean.getId());
+    }
+
+    /**
+     * 商家详情
+     * @return
+     */
+    public MerchantBean merchantDetail(String id){
+        Merchant merchant = merchantService.getById(id);
+        MerchantBean serviceProviderBean = BeanUtil.copyProperties(merchant, MerchantBean.class);
+        
+        return serviceProviderBean;
+    }
+
+    public void update(MerchantAddBean serviceProvider) {
+        //旧服务商
+        Merchant old = merchantService.getById(serviceProvider.getId());
+        //判断是否从有效变为无效
+        if(old.getStatus() == 1 && serviceProvider.getStatus() == 0){
+//            Integer count1 = orderBaseService.lambdaQuery()
+//                    .notIn(OrderBase::getOrderStatus, OrderBaseStatusEnum.isOver())
+//                    .eq(OrderBase::getWebsitId, serviceProvider.getId()).count();
+//            if(count1 > 0){
+//                throw new RemoteServiceException("服务商存在未完成的工单,不可将状态变更无效/终止,请改派之后再操作");
+//            }
+        }
+        //编号不能改
+        serviceProvider.setNumber(null);
+        serviceProvider.updateById();
+
+        //更新账号信息
+        AdminUser adminUser = adminUserService.lambdaQuery()
+                .eq(AdminUser::getServiceProviderId, serviceProvider.getId())
+                .eq(AdminUser::getType, RoleTypeEnum.B.getCode()).one();
+        if(adminUser != null) {
+            adminUser.setLinkName(serviceProvider.getChargeName());
+            adminUser.setLinkPhone(serviceProvider.getChargeMobile());
+            adminUser.setAddress(serviceProvider.getAddress());
+            adminUser.setNickName(serviceProvider.getName());
+            adminUser.updateById();
+        }
+
+        //操作日志
+        MerchantStatusEnum oldStatusEnum = BaseEnum.intKeyToEnum(MerchantStatusEnum.class, old.getStatus());
+        MerchantStatusEnum newStatusEnum = BaseEnum.intKeyToEnum(MerchantStatusEnum.class, serviceProvider.getStatus());
+
+        StringBuffer sbLog = new StringBuffer();
+        sbLog.append(CommonUtils.supplyLog("状态",oldStatusEnum.getRemark(),newStatusEnum.getRemark()));
+        sbLog.append(CommonUtils.supplyLog("服务商名称",old.getName(),serviceProvider.getName()));
+        sbLog.append(CommonUtils.supplyLog("负责人",old.getChargeName(),serviceProvider.getChargeName()));
+        sbLog.append(CommonUtils.supplyLog("负责人电话",old.getChargeMobile(),serviceProvider.getChargeMobile()));
+        sbLog.append(CommonUtils.supplyLog("办公电话",old.getOfficeMobile(),serviceProvider.getOfficeMobile()));
+        sbLog.append(CommonUtils.supplyLog("税号",old.getTaxNo(),serviceProvider.getTaxNo()));
+        sbLog.append(CommonUtils.supplyLog("是否独立法人",old.getIsLegal(),serviceProvider.getIsLegal()));
+        sbLog.append(CommonUtils.supplyLog("法人代表",old.getLegalName(),serviceProvider.getLegalName()));
+        sbLog.append(CommonUtils.supplyLog("法人身份证号",old.getLegalIdcard(),serviceProvider.getLegalIdcard()));
+        sbLog.append(CommonUtils.supplyLog("法人手机号",old.getLegalMobile(),serviceProvider.getLegalMobile()));
+        sbLog.append(CommonUtils.supplyLog("详细地址",old.getAddress(),serviceProvider.getAddress()));
+        sbLog.append(CommonUtils.supplyLog("营业时间开始",old.getStartTime(),serviceProvider.getStartTime()));
+        sbLog.append(CommonUtils.supplyLog("营业时间结束",old.getEndTime(),serviceProvider.getEndTime()));
+        sbLog.append(CommonUtils.supplyLog("银行账号",old.getBankAccount(),serviceProvider.getBankAccount()));
+        sbLog.append(CommonUtils.supplyLog("开户行号",old.getBankNo(),serviceProvider.getBankNo()));
+        sbLog.append(CommonUtils.supplyLog("开户银行",old.getBank(),serviceProvider.getBank()));
+        if(StringUtils.isNotBlank(sbLog.toString())) {
+            commonLogic.addUpdateLog(serviceProvider.getId(), sbLog.toString(), UpdateLogRemarkEnum.A);
+        }
+    }
+
+    /**
+     * 删除商家
+     */
+    public void delete(String id){
+        merchantService.removeById(id);
+    }
 }

+ 26 - 0
src/main/resources/mapper/CommonMapper.xml

@@ -83,5 +83,31 @@
         </if>
         ${ex.orderBy}
     </select>
+    <select id="MerchantPage" resultType="com.gree.mall.contest.bean.merchant.MerchantVO">
+        SELECT
+        ${ex.selected}
+        FROM merchant a
+        ${ex.query}
+        <if test="serviceProviderId != null and serviceProviderId !=''">
+            AND a.id = #{serviceProviderId}
+        </if>
+        GROUP BY a.id
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+    <select id="listMerchantRegion" resultType="com.gree.mall.contest.bean.merchant.MerchantRegionVO">
+        select
+        ${ex.selected}
+        from merchant a
+        join admin_websit_region b on a.id=b.admin_websit_id
+        ${ex.query}
+        <if test="serviceProviderId != null and serviceProviderId !=''">
+            and a.id = #{serviceProviderId}
+        </if>
+        group by b.id
+        order by a.create_time desc
+    </select>
 
 </mapper>