Explorar o código

1.添加合作机构相关接口

yuanliang hai 1 ano
pai
achega
79c4c209c0
Modificáronse 13 ficheiros con 691 adicións e 0 borrados
  1. 84 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/CooperateTenantController.java
  2. 46 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenCooperateTenantController.java
  3. 5 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  4. 35 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ECooperateTenantNature.java
  5. 84 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CooperateTenantController.java
  6. 52 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenCooperateTenantController.java
  7. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CooperateTenant.java
  8. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java
  9. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/CooperateTenantMapper.java
  10. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CooperateTenantService.java
  11. 121 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CooperateTenantServiceImpl.java
  12. 102 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/CooperateTenantWrapper.java
  13. 38 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CooperateTenantMapper.xml

+ 84 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/CooperateTenantController.java

@@ -0,0 +1,84 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.entity.CooperateTenant;
+import com.yonge.cooleshow.biz.dal.service.CooperateTenantService;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PathVariable;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/cooperateTenant")
+@Api(tags = "合作机构")
+public class CooperateTenantController extends BaseController {
+
+    @Autowired
+    private CooperateTenantService cooperateTenantService;
+
+    @ApiOperation(value = "详情", notes = "合作机构-根据详情ID查询单条, 传入id")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/detail', {'BACKEND'})")
+    //@GetMapping("/detail/{id}")
+    public R<CooperateTenant> detail(@PathVariable("id") Long id) {
+
+        CooperateTenant wrapper = cooperateTenantService.detail(id);
+
+        return R.from(wrapper);
+    }
+
+    @ApiOperation(value = "查询分页", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenantQuery")
+//    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/page', {'BACKEND'})")
+    @PostMapping("/page")
+    public R<PageInfo<CooperateTenant>> page(@RequestBody CooperateTenantWrapper.CooperateTenantQuery query) {
+
+        IPage<CooperateTenant> pages = cooperateTenantService.selectPage(QueryInfo.getPage(query), query);
+
+        return R.from(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "新增", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenant")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/save', {'BACKEND'})")
+    //@PostMapping("/save")
+    public R<JSONObject> add(@Validated @RequestBody CooperateTenant cooperateTenant) {
+
+        // 新增数据
+        cooperateTenantService.save(cooperateTenant);
+
+        return R.defaultR();
+    }
+
+    @ApiOperation(value = "修改", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenant")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/update', {'BACKEND'})")
+    //@PostMapping("/update")
+    public R<JSONObject> update(@Validated @RequestBody CooperateTenant cooperateTenant) {
+
+        // 更新数据
+        cooperateTenantService.updateById(cooperateTenant);
+
+        return R.defaultR();
+    }
+
+    @ApiOperation(value = "删除", notes = "合作机构- 传入id")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/remove', {'BACKEND'})")
+    //@PostMapping("/remove")
+    public R<Boolean> remove(@RequestParam Long id) {
+
+        return R.from(cooperateTenantService.removeById(id));
+    }
+}

+ 46 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenCooperateTenantController.java

@@ -0,0 +1,46 @@
+package com.yonge.cooleshow.admin.controller.open;
+
+import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.service.CooperateTenantService;
+import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.toolset.base.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+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;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/open/cooperateTenant")
+@Api(tags = "合作机构")
+public class OpenCooperateTenantController extends BaseController {
+
+    @Autowired
+    private CooperateTenantService cooperateTenantService;
+
+    @Autowired
+    private SmsCodeService smsCodeService;
+
+    @ApiOperation(value = "新增", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenant")
+    @PostMapping("/save")
+    public R<JSONObject> add(@Validated @RequestBody CooperateTenantWrapper.CooperateTenant cooperateTenant) {
+        boolean validCode = smsCodeService.verifyValidCode(cooperateTenant.getPhone(), cooperateTenant.getCode(), "");
+        if (!validCode) {
+            throw new BizException("验证码错误");
+        }
+        // 新增数据
+        cooperateTenantService.add(cooperateTenant);
+        return R.defaultR();
+    }
+
+}

+ 5 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -408,4 +408,9 @@ public interface SysConfigConstant {
      * 学生默认头像
      */
     String STUDENT_AVATAR = "student_avatar";
+
+    /**
+     * 添加合作信息的短信发送手机号
+     */
+    String ADD_COOPERATE_TENANT_SEND_MSG_PHONE = "add_cooperate_tenant_send_msg_phone";
 }

+ 35 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ECooperateTenantNature.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 合作单位性质
+ */
+public enum ECooperateTenantNature implements BaseEnum<String, ECooperateTenantNature> {
+
+    PRIMARY_AND_SECONDARY_SCHOOLS("中小学学校"),
+    EDUCATIONAL_INSTITUTIONS("教培机构"),
+    PLAYERS("音乐达人"),
+    AGENT("代理商"),
+    ;
+
+    @EnumValue
+    private String code;
+
+    private String desc;
+
+    ECooperateTenantNature(String desc) {
+        this.code = this.name();
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return name();
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 84 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CooperateTenantController.java

@@ -0,0 +1,84 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.entity.CooperateTenant;
+import com.yonge.cooleshow.biz.dal.service.CooperateTenantService;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PathVariable;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/cooperateTenant")
+@Api(tags = "合作机构")
+public class CooperateTenantController extends BaseController {
+
+    @Autowired
+    private CooperateTenantService cooperateTenantService;
+
+    @ApiOperation(value = "详情", notes = "合作机构-根据详情ID查询单条, 传入id")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/detail', {'BACKEND'})")
+    //@GetMapping("/detail/{id}")
+    public R<CooperateTenant> detail(@PathVariable("id") Long id) {
+
+        CooperateTenant wrapper = cooperateTenantService.detail(id);
+
+        return R.from(wrapper);
+    }
+
+    @ApiOperation(value = "查询分页", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenantQuery")
+//    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/page', {'BACKEND'})")
+    @PostMapping("/page")
+    public R<PageInfo<CooperateTenant>> page(@RequestBody CooperateTenantWrapper.CooperateTenantQuery query) {
+
+        IPage<CooperateTenant> pages = cooperateTenantService.selectPage(QueryInfo.getPage(query), query);
+
+        return R.from(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "新增", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenant")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/save', {'BACKEND'})")
+    //@PostMapping("/save")
+    public R<JSONObject> add(@Validated @RequestBody CooperateTenant cooperateTenant) {
+
+        // 新增数据
+        cooperateTenantService.save(cooperateTenant);
+
+        return R.defaultR();
+    }
+
+    @ApiOperation(value = "修改", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenant")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/update', {'BACKEND'})")
+    //@PostMapping("/update")
+    public R<JSONObject> update(@Validated @RequestBody CooperateTenant cooperateTenant) {
+
+        // 更新数据
+        cooperateTenantService.updateById(cooperateTenant);
+
+        return R.defaultR();
+    }
+
+    @ApiOperation(value = "删除", notes = "合作机构- 传入id")
+    @PreAuthorize("@pcs.hasPermissions('cooperateTenant/remove', {'BACKEND'})")
+    //@PostMapping("/remove")
+    public R<Boolean> remove(@RequestParam Long id) {
+
+        return R.from(cooperateTenantService.removeById(id));
+    }
+}

+ 52 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenCooperateTenantController.java

@@ -0,0 +1,52 @@
+package com.yonge.cooleshow.admin.controller.open;
+
+import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.service.CooperateTenantService;
+import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.toolset.base.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+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 java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/open/cooperateTenant")
+@Api(tags = "合作机构")
+public class OpenCooperateTenantController extends BaseController {
+
+    @Autowired
+    private CooperateTenantService cooperateTenantService;
+
+    @Autowired
+    private SmsCodeService smsCodeService;
+
+    @ApiOperation(value = "新增", notes = "合作机构- 传入 CooperateTenantWrapper.CooperateTenant")
+    @PostMapping("/save")
+    public R<JSONObject> add(@Validated @RequestBody CooperateTenantWrapper.CooperateTenant cooperateTenant) {
+        boolean validCode = smsCodeService.verifyValidCode(cooperateTenant.getPhone(), cooperateTenant.getCode(), "");
+        if (!validCode) {
+            throw new BizException("验证码错误");
+        }
+        // 新增数据
+        cooperateTenantService.add(cooperateTenant);
+        return R.defaultR();
+    }
+
+}

+ 53 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CooperateTenant.java

@@ -0,0 +1,53 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.yonge.cooleshow.common.enums.ECooperateTenantNature;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 合作机构
+ * 2023-11-06 14:18:23
+ */
+@Data
+@ApiModel(" CooperateTenant-合作机构")
+@TableName("cooperate_tenant")
+public class CooperateTenant implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("合作机构名称")
+    @TableField(value = "cooperate_tenant_name_")
+    private String cooperateTenantName;
+
+    @ApiModelProperty("合作机构性质")
+    @TableField(value = "cooperate_tenant_nature_")
+    private ECooperateTenantNature cooperateTenantNature;
+
+    @ApiModelProperty("联系人")
+    @TableField(value = "contacts_")
+    private String contacts;
+
+    @ApiModelProperty("手机号")
+    @TableField(value = "phone_")
+    private String phone;
+
+    @ApiModelProperty("创建时间")
+    @TableField(value = "create_time_")
+    private Date createTime;
+
+    @ApiModelProperty("更新时间")
+    @TableField(value = "update_time_")
+    private Date updateTime;
+
+}

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -130,6 +130,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TENANT_CODE_SENDCANCEL("激活码被撤回"),
     TENANT_MUSIC_BUY("购买曲目"),
     TENANT_STUDENT_CHANGE("机构变更"),
+    ADD_COOPERATE_TENANT("添加合作机构"),
     ;
 
     MessageTypeEnum(String msg) {

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/CooperateTenantMapper.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.yonge.cooleshow.biz.dal.entity.CooperateTenant;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+
+/**
+ * 合作机构
+ * 2023-11-06 14:05:19
+ */
+@Repository
+public interface CooperateTenantMapper extends BaseMapper<CooperateTenant> {
+
+    /**
+     * 分页查询
+     * @param page IPage<CooperateTenantWrapper.CooperateTenant>
+     * @param param CooperateTenantWrapper.CooperateTenantQuery
+     * @return List<CooperateTenantWrapper.CooperateTenant>
+     */
+    List<CooperateTenant> selectPage(@Param("page") IPage<CooperateTenant> page, @Param("param") CooperateTenantWrapper.CooperateTenantQuery param);
+
+}

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CooperateTenantService.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+import com.yonge.cooleshow.biz.dal.entity.CooperateTenant;
+
+/**
+ * 合作机构
+ * 2023-11-06 14:05:19
+ */
+public interface CooperateTenantService extends IService<CooperateTenant>  {
+
+    /**
+     * 查询详情
+     * @param id 详情ID
+     * @return CooperateTenant
+     */
+    CooperateTenant detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<CooperateTenant>
+     * @param query CooperateTenantWrapper.CooperateTenantQuery
+     * @return IPage<CooperateTenant>
+     */
+    IPage<CooperateTenant> selectPage(IPage<CooperateTenant> page, CooperateTenantWrapper.CooperateTenantQuery query);
+
+    /**
+     * 添加
+     * @param cooperateTenant CooperateTenantWrapper.CooperateTenant
+     * @return Boolean
+     */
+    Boolean add(CooperateTenantWrapper.CooperateTenant cooperateTenant);
+
+    /**
+     * 更新
+     * @param cooperateTenant CooperateTenantWrapper.CooperateTenant
+     * @return Boolean
+     */
+    Boolean update(CooperateTenantWrapper.CooperateTenant cooperateTenant);
+
+}

+ 121 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CooperateTenantServiceImpl.java

@@ -0,0 +1,121 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.entity.CooperateTenant;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
+import com.yonge.cooleshow.biz.dal.mapper.CooperateTenantMapper;
+import com.yonge.cooleshow.biz.dal.service.CooperateTenantService;
+import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
+import com.yonge.cooleshow.biz.dal.wrapper.CooperateTenantWrapper;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
+import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 合作机构
+ * 2023-11-06 14:05:19
+ */
+@Slf4j
+@Service
+public class CooperateTenantServiceImpl extends ServiceImpl<CooperateTenantMapper, CooperateTenant> implements CooperateTenantService {
+
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private SysConfigService sysConfigService;
+
+    /**
+     * 查询详情
+     *
+     * @param id 详情ID
+     * @return CooperateTenant
+     */
+    @Override
+    public CooperateTenant detail(Long id) {
+
+        return baseMapper.selectById(id);
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param page  IPage<CooperateTenant>
+     * @param query CooperateTenantWrapper.CooperateTenantQuery
+     * @return IPage<CooperateTenant>
+     */
+    @Override
+    public IPage<CooperateTenant> selectPage(IPage<CooperateTenant> page,
+                                             CooperateTenantWrapper.CooperateTenantQuery query) {
+
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+
+    /**
+     * 添加
+     *
+     * @param cooperateTenant CooperateTenantWrapper.CooperateTenant
+     * @return Boolean
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean add(CooperateTenantWrapper.CooperateTenant cooperateTenant) {
+        String phone = cooperateTenant.getPhone();
+        CooperateTenant one = this.lambdaQuery().eq(CooperateTenant::getPhone, phone).last("limit 1").one();
+        if (one != null) {
+            one.setCooperateTenantName(cooperateTenant.getCooperateTenantName());
+            one.setCooperateTenantNature(cooperateTenant.getCooperateTenantNature());
+            one.setContacts(cooperateTenant.getContacts());
+            one.setUpdateTime(new Date());
+            this.updateById(one);
+        } else {
+            this.save(JSON.parseObject(cooperateTenant.jsonString(), CooperateTenant.class));
+        }
+        // 发送短信
+        String configValue = sysConfigService.findConfigValue(SysConfigConstant.ADD_COOPERATE_TENANT_SEND_MSG_PHONE);
+        if (StringUtils.isNotEmpty(configValue)) {
+            try {
+                Map<Long, String> receivers = new HashMap<>();
+                receivers.put(0L, configValue);
+                sysMessageService.batchSendMessage(
+                        MessageSenderPluginContext.MessageSender.AWSMS,
+                        MessageTypeEnum.ADD_COOPERATE_TENANT,
+                        receivers, null, 0, null, null,
+                        cooperateTenant.getCooperateTenantName(),
+                        cooperateTenant.getContacts(),
+                        cooperateTenant.getCooperateTenantNature(),
+                        cooperateTenant.getPhone()
+                );
+            } catch (Exception e) {
+                log.warn("添加合作机构失败,发送短信失败,{}", e.getMessage());
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 更新
+     *
+     * @param cooperateTenant CooperateTenantWrapper.CooperateTenant
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(CooperateTenantWrapper.CooperateTenant cooperateTenant) {
+
+        return this.updateById(JSON.parseObject(cooperateTenant.jsonString(), CooperateTenant.class));
+    }
+}

+ 102 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/CooperateTenantWrapper.java

@@ -0,0 +1,102 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.cooleshow.common.enums.ECooperateTenantNature;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+/**
+ * 合作机构
+ * 2023-11-06 14:05:19
+ */
+@ApiModel(value = "CooperateTenantWrapper对象", description = "合作机构查询对象")
+public class CooperateTenantWrapper {
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" CooperateTenantQuery-合作机构")
+    public static class CooperateTenantQuery implements QueryInfo {
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("关键字匹配")
+        private String keyword;
+
+        @ApiModelProperty("合作机构性质")
+        private ECooperateTenantNature cooperateTenantNature;
+
+        @ApiModelProperty("提交开始时间")
+        private Date submitStartTime;
+
+        @ApiModelProperty("提交结束时间")
+        private Date submitEndTime;
+
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static CooperateTenantQuery from(String json) {
+            return JSON.parseObject(json, CooperateTenantQuery.class);
+        }
+    }
+
+    @Data
+    @ApiModel(" CooperateTenant-合作机构")
+    public static class CooperateTenant {
+
+        @ApiModelProperty("合作机构名称")
+        @NotNull(message = "合作机构名称不能为空")
+        private String cooperateTenantName;
+
+        @ApiModelProperty("合作机构性质")
+        @NotNull(message = "合作机构性质不能错误")
+        private ECooperateTenantNature cooperateTenantNature;
+
+        @ApiModelProperty("联系人")
+        @NotNull(message = "联系人不能为空")
+        private String contacts;
+
+        @ApiModelProperty("手机号")
+        @Pattern(regexp = "^1\\d{10}$", message = "手机号码格式错误")
+        private String phone;
+
+        @ApiModelProperty("验证码")
+        @NotNull(message = "验证码不能为空")
+        private String code;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static CooperateTenant from(String json) {
+            return JSON.parseObject(json, CooperateTenant.class);
+        }
+    }
+
+}

+ 38 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CooperateTenantMapper.xml

@@ -0,0 +1,38 @@
+<?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.yonge.cooleshow.biz.dal.mapper.CooperateTenantMapper">
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+        t.id_ AS id
+        , t.cooperate_tenant_name_ AS cooperateTenantName
+        , t.cooperate_tenant_nature_ AS cooperateTenantNature
+        , t.contacts_ AS contacts
+        , t.phone_ AS phone
+        , t.create_time_ AS createTime
+        , t.update_time_ AS updateTime
+    </sql>
+
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.entity.CooperateTenant">
+        SELECT
+        <include refid="baseColumns"/>
+        FROM cooperate_tenant t
+        <where>
+            <if test="param.keyword != null">
+                and (t.cooperate_tenant_name_ like concat('%',#{param.keyword},'%')
+                or t.cooperate_tenant_nature_ like concat('%',#{param.keyword},'%')
+                or t.phone_ like concat('%',#{param.keyword},'%')
+                )
+            </if>
+            <if test="param.cooperateTenantNature != null">
+                and t.cooperate_tenant_nature_ = #{param.cooperateTenantNature}
+            </if>
+            <if test="param.submitStartTime != null">
+                and t.create_time_ >= #{param.submitStartTime}
+            </if>
+            <if test="param.submitEndTime != null">
+                and #{param.submitEndTime} >= t.create_time_
+            </if>
+        </where>
+        order by t.id_ desc
+    </select>
+</mapper>