Browse Source

添加机构管理接口功能

haonan 2 years ago
parent
commit
9ac863c68b

+ 82 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TenantInfoController.java

@@ -0,0 +1,82 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
+import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.mybatis.support.PageUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.*;
+
+import javax.validation.Valid;
+
+/**
+ * @Author:haonan
+ * @Date:2023/7/24 9:57
+ * @Filename:TenantInfoController
+ */
+@RestController
+@RequestMapping("/tenantInfo")
+@Api(value = "机构管理", tags = "机构管理")
+public class TenantInfoController extends BaseController {
+
+    @Autowired
+    TenantInfoService tenantInfoService;
+
+    /**
+     * 查询分页
+     * @param query
+     */
+    @PostMapping("/page")
+    @ApiOperation(value = "查询分页", notes = "TenantInfo")
+    @PreAuthorize("@pcs.hasPermissions('tenantInfo/page')")
+        public HttpResponseResult<PageInfo<TenantInfoWrapper.TenantInfo>> page(@RequestBody TenantInfoWrapper.TenantInfoQuery query) {
+
+        IPage<TenantInfoWrapper.TenantInfo> pages = tenantInfoService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+    /**
+     * 修改数据
+     */
+    @PostMapping("/update")
+    @ApiOperation(value = "修改", notes = "传入TenantInfo")
+    @PreAuthorize("@pcs.hasPermissions('tenantInfo/update')")
+    public HttpResponseResult<Boolean> updateTenantInfo(@Valid @RequestBody  TenantInfo info) {
+        return tenantInfoService.updateTenantInfo(info);
+    }
+
+
+    /**
+     * 插入数据
+     */
+    @PostMapping("/insert")
+    @ApiOperation(value = "更新", notes = "传入TenantInfo")
+    @PreAuthorize("@pcs.hasPermissions('tenantInfo/insert')")
+    public HttpResponseResult<Boolean> insertTenantInfo(@Validated(TenantInfo.class) @RequestBody TenantInfo info) {
+        return tenantInfoService.add(info);
+    }
+
+
+    /**
+     * 冻结
+     */
+    @PostMapping("/state")
+    @ApiOperation(value = "冻结", notes = "传入id和布尔类型")
+    @PreAuthorize("@pcs.hasPermissions('tenantInfo/state')")
+    public HttpResponseResult<Boolean> state( @RequestBody TenantInfoWrapper.TenantInfoQuery query) {
+        if (StringUtil.isEmpty(query.getId())) {
+            return failed("参数不能为空");
+        }
+        return status(tenantInfoService.state(query));
+    }
+
+}

+ 6 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantInfo.java

@@ -4,6 +4,7 @@ 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.toolset.base.page.QueryInfo;
 import lombok.Data;
 
 import io.swagger.annotations.ApiModel;
@@ -20,7 +21,7 @@ import java.util.Date;
 @Data
 @ApiModel(" TenantInfo-机构表")
 @TableName("tenant_info")
-public class TenantInfo implements Serializable {
+public class TenantInfo  implements Serializable  {
 
     @ApiModelProperty("主键ID")
     @TableId(value = "id_")
@@ -70,4 +71,8 @@ public class TenantInfo implements Serializable {
     @TableField(value = "create_time_")
     private Date createTime;
 
+    @ApiModelProperty("简介")
+    @TableField(value = "brief_introduction_")
+    private String briefIntroduction;
+
 }

+ 19 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/TenantInfoMapper.java

@@ -22,6 +22,23 @@ public interface TenantInfoMapper extends BaseMapper<TenantInfo> {
 	 * @param param TenantInfoWrapper.TenantInfoQuery
 	 * @return List<TenantInfoWrapper.TenantInfo>
 	 */
-	List<TenantInfo> selectPage(@Param("page") IPage<TenantInfo> page, @Param("param") TenantInfoWrapper.TenantInfoQuery param);
-	
+	List<TenantInfoWrapper.TenantInfo> selectPage(@Param("page") IPage<TenantInfoWrapper.TenantInfo> page, @Param("param") TenantInfoWrapper.TenantInfoQuery param);
+
+	/**
+	 * 更新
+	 * @param info
+	 * @return
+	 */
+	Boolean updateInfo(@Param("param") TenantInfo info);
+
+
+	/**
+	 * 冻结
+	 * @param id
+	 */
+	Boolean updateFlag(@Param("id") Integer id);
+
+	Boolean updateMethod(@Param("id") Integer id);
+
+	Boolean insertInfo(@Param("param") TenantInfo tenantInfo);
 }

+ 9 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantInfoService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 import java.util.List;
 import java.util.Map;
@@ -27,21 +28,21 @@ public interface TenantInfoService extends IService<TenantInfo>  {
      * @param query TenantInfoWrapper.TenantInfoQuery
      * @return IPage<TenantInfo>
      */
-    IPage<TenantInfo> selectPage(IPage<TenantInfo> page, TenantInfoWrapper.TenantInfoQuery query);
+    IPage<TenantInfoWrapper.TenantInfo> selectPage(IPage<TenantInfoWrapper.TenantInfo> page, TenantInfoWrapper.TenantInfoQuery query);
 	
     /**
      * 添加
      * @param tenantInfo TenantInfoWrapper.TenantInfo
      * @return Boolean
      */
-     Boolean add(TenantInfoWrapper.TenantInfo tenantInfo);   
+    HttpResponseResult<Boolean> add(TenantInfo tenantInfo);
 
     /**
      * 更新
-     * @param tenantInfo TenantInfoWrapper.TenantInfo
+     * @param info TenantInfoWrapper.TenantInfo
      * @return Boolean
      */
-     Boolean update(TenantInfoWrapper.TenantInfo tenantInfo);
+    HttpResponseResult<Boolean> updateTenantInfo(TenantInfo info);
 
     /**
      * 机构信息
@@ -49,4 +50,8 @@ public interface TenantInfoService extends IService<TenantInfo>  {
      * @param tenantIds 机构ID
      */
     Map<Long,TenantInfo> getMapByIds(List<Long> tenantIds);
+
+    HttpResponseResult<Boolean> submit(TenantInfoWrapper.TenantInfoQuery query);
+
+    Boolean state(TenantInfoWrapper.TenantInfoQuery query);
 }

+ 107 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantInfoServiceImpl.java

@@ -3,7 +3,12 @@ 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.SysArea;
+import com.yonge.cooleshow.biz.dal.service.SysAreaService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -12,9 +17,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantInfoMapper;
 import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -24,6 +27,13 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantInfo> implements TenantInfoService {
+    @Autowired
+    SysAreaService sysAreaService;
+
+    @Autowired
+    TenantInfoMapper tenantInfoMapper;
+
+
 
 	/**
      * 查询详情
@@ -46,32 +56,60 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
      * @return IPage<TenantInfo>
      */
     @Override
-    public IPage<TenantInfo> selectPage(IPage<TenantInfo> page, TenantInfoWrapper.TenantInfoQuery query) {
-        
-        return page.setRecords(baseMapper.selectPage(page, query));
+    public IPage<TenantInfoWrapper.TenantInfo> selectPage(IPage<TenantInfoWrapper.TenantInfo> page, TenantInfoWrapper.TenantInfoQuery query) {
+
+        //分页查询
+        List<TenantInfoWrapper.TenantInfo> tenantInfos = baseMapper.selectPage(page, query);
+        //获取省市区信息
+        List<Integer> areaCodeList = tenantInfos.stream().map(next -> {
+            Set<Integer> codes = new HashSet<>();
+            codes.add(next.getCityCode());
+            codes.add(next.getProvinceCode());
+            codes.add(next.getRegionCode());
+            return codes;
+        }).flatMap(Collection::stream).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+
+        Map<Integer, String> codeNameMap = new HashMap<>();
+
+        if (!CollectionUtils.isEmpty(areaCodeList)) {
+            List<SysArea> sysAreaList = sysAreaService.queryByCodes(areaCodeList);
+            codeNameMap = sysAreaList.stream().collect(Collectors.toMap(SysArea::getCode,
+                    SysArea::getName));
+        }
+
+        for (TenantInfoWrapper.TenantInfo next : tenantInfos) {
+            next.setProvinceName(codeNameMap.getOrDefault(next.getProvinceCode(), ""));
+            next.setCityName(codeNameMap.getOrDefault(next.getCityCode(), ""));
+            next.setRegionName(codeNameMap.getOrDefault(next.getRegionCode(), ""));
+//            next.setSchoolName(schoolIdNameMap.getOrDefault(next.getSchoolId(), ""));
+        }
+        return page.setRecords(tenantInfos);
     }
-	
+
     /**
      * 添加
      * @param tenantInfo TenantInfoWrapper.TenantInfo
      * @return Boolean
      */
     @Override
+    public HttpResponseResult<Boolean> add(TenantInfo tenantInfo) {
+        Boolean bool = tenantInfoMapper.insertInfo(tenantInfo);
+        return HttpResponseResult.succeed(bool);
+    }
+	
+
+    /*@Override
     public Boolean add(TenantInfoWrapper.TenantInfo tenantInfo) {    	
         
         return this.save(JSON.parseObject(tenantInfo.jsonString(), TenantInfo.class));
-    }
+    }*/
 
-    /**
-     * 更新
-     * @param tenantInfo TenantInfoWrapper.TenantInfo
-     * @return Boolean
-     */
-    @Override
+
+    /*@Override
     public Boolean update(TenantInfoWrapper.TenantInfo tenantInfo){
 
         return this.updateById(JSON.parseObject(tenantInfo.jsonString(), TenantInfo.class));       
-    }
+    }*/
 
     /**
      * 机构信息
@@ -91,4 +129,58 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
         }
         return list.stream().collect(Collectors.toMap(TenantInfo::getId, tenantInfo -> tenantInfo));
     }
+
+    @Override
+    public HttpResponseResult<Boolean> submit(TenantInfoWrapper.TenantInfoQuery query) {
+        return null;
+    }
+
+    /**
+     * 冻结
+     * @param query TenantInfoWrapper.TenantInfo
+     * @return Boolean
+     */
+    @Override
+    public Boolean state(TenantInfoWrapper.TenantInfoQuery query) {
+        Boolean flag;
+        Integer id = query.getId();
+        long longId = id.longValue();
+        TenantInfo info = detail(longId);
+
+        //TenantInfo info = this.getById(id);
+        if (Objects.isNull(info)) {
+            throw new BizException("机构信息不存在");
+        }
+        //获取是否冻结
+         if (query.getIfFreeze() == 1){
+             if (!info.getEnableFlag()){
+                 return false;
+             }
+             //修改机构账号冻结状态
+              flag = tenantInfoMapper.updateFlag(id);
+             //是否更改结算方式
+             if (query.getIfMethod() == 1){
+                 tenantInfoMapper.updateMethod(id);
+             }else {
+                 return true;
+             }
+         }
+         else {
+             return false;
+         }
+        return flag;
+    }
+
+    /**
+     * 更新
+     * @param info TenantInfoWrapper.TenantInfo
+     * @return Boolean
+     */
+    @Override
+    public HttpResponseResult<Boolean> updateTenantInfo(TenantInfo info) {
+        Boolean bool = tenantInfoMapper.updateInfo(info);
+        return HttpResponseResult.succeed(bool);
+    }
+
+
 }

+ 71 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantInfoWrapper.java

@@ -1,7 +1,7 @@
 package com.yonge.cooleshow.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
-import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.util.Optional;
@@ -24,16 +24,34 @@ public class TenantInfoWrapper {
     @NoArgsConstructor
     @AllArgsConstructor
     @ApiModel(" TenantInfoQuery-机构表")
-    public static class TenantInfoQuery implements QueryInfo {
+    public static class TenantInfoQuery  extends QueryInfo {
+        @ApiModelProperty("id")
+        private Integer id;
+
+        @ApiModelProperty("是否冻结")
+        private Integer ifFreeze;
+
+        @ApiModelProperty("是否更改结算方式")
+        private Integer ifMethod;
     
     	@ApiModelProperty("当前页")
-        private Integer page;
+        private int page;
         
         @ApiModelProperty("分页行数")
-        private Integer rows;
+        private int rows;
         
         @ApiModelProperty("关键字匹配")
 		private String keyword;
+
+        @ApiModelProperty("省份编码")
+        private Integer provinceCode;
+
+        @ApiModelProperty("城市编码")
+        private Integer cityCode;
+
+        @ApiModelProperty("地区街道编码")
+        private Integer regionCode;
+
         
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
@@ -48,8 +66,56 @@ public class TenantInfoWrapper {
         }
     }  
 
-	@ApiModel(" TenantInfo-机构表")
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" TenantInfo-机构表分页响应")
     public static class TenantInfo {
+        @ApiModelProperty("机构名称")
+        private String name;
+
+        @ApiModelProperty("logo")
+        private String logo;
+
+        @ApiModelProperty("简介")
+        private String briefIntroduction;
+
+        @ApiModelProperty("所属地区")
+        private String area;
+
+        @ApiModelProperty("联系人")
+        private String userName;
+
+        @ApiModelProperty("联系方式")
+        private String phone;
+
+        @ApiModelProperty("教师数量")
+        private String teacherCounts;
+
+        @ApiModelProperty("学生数量")
+        private String studentCounts;
+
+        @ApiModelProperty("省份编码")
+        private Integer provinceCode;
+
+        @ApiModelProperty("城市编码")
+        private Integer cityCode;
+
+        @ApiModelProperty("地区街道编码")
+        private Integer regionCode;
+
+        @ApiModelProperty("省份名称")
+        private String provinceName;
+
+        @ApiModelProperty("城市名称")
+        private String cityName;
+
+        @ApiModelProperty("地区街道名称")
+        private String regionName;
+
+
         
         public String jsonString() {
             return JSON.toJSONString(this);

+ 79 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml

@@ -18,12 +18,87 @@
         , t.enable_flag_ AS enableFlag
         , t.update_time_ AS updateTime
         , t.create_time_ AS createTime
-        </sql> 
-    
-    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.entity.TenantInfo">
+        , t.brief_Introduction_ AS briefIntroduction
+        </sql>
+
+    <insert id="insertInfo" parameterType="com.yonge.cooleshow.biz.dal.entity.TenantInfo">
+        insert into tenant_info
+        (name_,logo_,brief_Introduction_,province_code_,city_code_,region_code_,username_,phone_)
+        values (#{param.name},#{param.logo},#{param.briefIntroduction},#{param.provinceCode},#{param.cityCode},#{param.regionCode},#{param.username},#{param.phone})
+    </insert>
+    <update id="updateInfo">
+        update tenant_info
+        set
+        <if test="param.name != null and param.name != ''">
+            name_ = #{param.name},
+        </if>
+        <if test="param.logo != null and param.logo != ''">
+            logo_ = #{param.logo},
+        </if>
+        <if test="param.provinceCode != null and param.provinceCode != ''">
+            province_code_ = #{param.provinceCode},
+        </if>
+        <if test="param.cityCode != null and param.cityCode != ''">
+            city_code_ = #{param.cityCode},
+        </if>
+        <if test="param.regionCode != null and param.regionCode != ''">
+            region_code_ = #{param.regionCode},
+        </if>
+        <if test="param.briefIntroduction != null and param.briefIntroduction != ''">
+            brief_introduction_= #{param.briefIntroduction},
+        </if>
+        <if test="param.username != null and param.username != ''">
+            username_ = #{param.username},
+        </if>
+        <if test="param.phone != null and param.phone != ''">
+            phone_ = #{param.phone}
+        </if>
+        WHERE id_ = #{param.id}
+
+
+    </update>
+    <update id="updateFlag">
+        update tenant_info
+        set enable_flag_ = 0
+        where id_ = #{id}
+    </update>
+    <update id="updateMethod">
+        update teacher
+        set settlement_from_ = 'TEACHER'
+        where tenant_id_ = #{id}
+    </update>
+
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper$TenantInfo">
 		SELECT         
-        	<include refid="baseColumns" />
+        	name_ AS name,
+        	logo_ AS logo,
+        	brief_Introduction_ AS briefIntroduction,
+        	username_ AS username,
+        	phone_ AS phone,
+            province_code_ AS provinceCode,
+            city_code_ AS cityCode,
+            region_code_ AS regionCode,
+           (SELECT count(t.tenant_id_) FROM teacher t INNER JOIN  tenant_info i on t.tenant_id_ = i.id_ GROUP BY i.id_) AS teacherCounts,
+           (SELECT count(s.tenant_id_) FROM student s INNER JOIN  tenant_info i on s.tenant_id_ = i.id_ GROUP BY i.id_) AS studentCounts
 		FROM tenant_info t
+		where 1=1
+        <if test="param.keyword != null and param.keyword  != ''">
+            and (
+            t.name_ like concat('%',#{param.keyword},'%')
+            or t.username_ like concat('%',#{param.keyword},'%')
+            or t.phone_ like concat('%',#{param.keyword},'%')
+            )
+        </if>
+        <if test="param.provinceCode != null and param.provinceCode != ''
+               and param.cityCode != null and param.cityCode != ''
+               and param.regionCode != null and param.regionCode != ''">
+            and
+            t.province_code_ = #{param.provinceCode}
+            and
+            t.city_code_ = #{param.cityCode}
+            and
+            t.region_code_ = #{param.regionCode}
+        </if>
 	</select>
     
 </mapper>