liujie
2025-12-15 e93123445fb825ef76acde0077013fe2086eb309
后台接口
3个文件已添加
7个文件已修改
454 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCompanyController.java 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-test.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TCompany.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/CompanyUserQuery.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TCompanyQuery.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCompanyController.java
New file
@@ -0,0 +1,308 @@
package com.ruoyi.web.controller.api;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.model.TCompany;
import com.ruoyi.system.model.TPhysicalGoods;
import com.ruoyi.system.query.BigGiftPackageQuery;
import com.ruoyi.system.query.CompanyUserQuery;
import com.ruoyi.system.query.TCompanyQuery;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TCompanyService;
import com.ruoyi.system.service.TPhysicalGoodsService;
import com.ruoyi.web.controller.system.SysUserController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.text.MessageFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
 * <p>
 * 公司 前端控制器
 * </p>
 *
 * @author xiaochen
 * @since 2025-12-08
 */
@RestController
@RequestMapping("/t-company")
@Api(tags = "(嘉视达)公司 管理")
public class TCompanyController extends BaseController {
    private final TCompanyService companyService;
    private final ISysUserService userService;
    private final RedisTemplate redisTemplate;
    public TCompanyController(TCompanyService companyService, ISysUserService userService, RedisTemplate redisTemplate) {
        this.companyService = companyService;
        this.userService = userService;
        this.redisTemplate = redisTemplate;
    }
    @ApiOperation(value = "公司分页列表")
    @PostMapping(value = "/pageList")
    public R<Page<TCompany>> pageList(@RequestBody TCompanyQuery query) {
        Page<TCompany> page = new Page<>(query.getPageNum(), query.getPageSize());
        LambdaQueryWrapper<TCompany> wrapper = new LambdaQueryWrapper<>();
        wrapper.ne(TCompany::getStatus, 3);
        wrapper.like(Objects.nonNull(query.getName()), TCompany::getName, query.getName());
        wrapper.like(Objects.nonNull(query.getChargePerson()), TCompany::getChargePerson, query.getChargePerson());
        wrapper.orderByDesc(TCompany::getCreateTime);
        Page<TCompany> pageInfo = companyService.page(page, wrapper);
        return R.ok(pageInfo);
    }
    @ApiOperation(value = "公司详情")
    @PostMapping(value = "/detail/{id}")
    public R<TCompany> detail(@PathVariable Integer id) {
        TCompany company = companyService.getById(id);
        return R.ok(company);
    }
    @ApiOperation(value = "公司添加")
    @PostMapping(value = "/add")
    @Log(title = "添加公司-添加", businessType = BusinessType.INSERT)
    public R<String> add(@RequestBody TCompany company) {
        company.setStatus(1);
        company.setCreateUserId(getUserId());
        SysUser user = new SysUser();
        user.setRoleType(2);
        user.setDeptId(124l);
        user.setIsAdmin(1);
        user.setUserName(company.getAccount());
        user.setPassword(company.getPassword());
        user.setPhonenumber(company.getChargePersonPhone());
        user.setNickName(company.getChargePerson());
        user.setRoleId(1l);
        if (!userService.checkUserNameUnique(user)) {
            return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
            return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setCreateBy(getUsername());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        int count = userService.insertUser(user);
        if (count > 0) {
            boolean save = companyService.save(company);
            if (save) {
                user.setCompanyId(company.getId());
                userService.updateUser(user);
            }
        }
        return R.ok();
    }
    @ApiOperation(value = "公司修改")
    @PostMapping(value = "/edit")
    @Log(title = "修改公司-修改", businessType = BusinessType.UPDATE)
    public R<String> edit(@RequestBody TCompany company) {
        SysUser user = userService.getUserByCompanyId(company.getId());
        if (!userService.checkUserNameUnique(user)) {
            return R.fail("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
            return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setUserName(company.getAccount());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        company.setUpdateUserId(getUserId());
        int count = userService.updateUser(user);
        if (count > 0) {
            boolean update = companyService.updateById(company);
            return R.ok();
        }
        return R.fail();
    }
    @ApiOperation(value = "公司删除")
    @DeleteMapping(value = "/delete/{id}")
    @Log(title = "删除公司-删除", businessType = BusinessType.DELETE)
    public R<String> delete(@PathVariable Integer id) {
        TCompany tCompany = companyService.getById(id);
        tCompany.setStatus(3);
        companyService.updateById(tCompany);
        SysUser userByCompanyId = userService.getUserByCompanyId(tCompany.getId());
        userByCompanyId.setDelFlag("2");
        userService.deleteUserByIds(Arrays.asList(userByCompanyId.getUserId()));
        return R.ok();
    }
    @ApiOperation(value = "公司需求--管理人员列表")
    @PostMapping(value = "/getCompanyUserList")
    public R<Page<SysUser>> getCompanyUserList(@RequestBody CompanyUserQuery query) {
        Page<SysUser> page = new Page<>(query.getPageNum(), query.getPageSize());
        List<SysUser> list =  userService.getCompanyUserList(page,query.getCompanyId());
        page.setRecords(list);
        return R.ok(page);
    }
    @ApiOperation(value = "公司需求--管理人员获取二维码")
    @GetMapping(value = "/getQrcode")
    public R<String> getQrcode(@RequestParam Long  userId) {
        Object o = redisTemplate.opsForValue().get("ADMIN_WX_IMG" + userId);
        if(o!=null){
            return R.ok(o.toString());
        }
        String accessToken = getAccessToken();
        String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
        Map<String, Object> param = new HashMap<>();
        param.put("page", "pages/home/home");
        param.put("width", 430); //二维码尺寸
        param.put("scene", "userId=" + userId); //二维码尺寸
        param.put("env_version", "trial"); //二维码尺寸
        HttpRequest post = HttpUtil.createPost(url);
        post.body(JSON.toJSONString(param));
        byte[] result = post.execute().bodyBytes();
        // base64
        String img = Base64.getEncoder().encodeToString(result);
        // 后台用户的小程序码
        redisTemplate.opsForValue().set("ADMIN_WX_IMG" + userId, img);
        return R.ok(img);
    }
    @Value("${wx.url}")
    private String ACCESS_TOKEN_URL;
    @Value("${wx.conf.secretId}")
    private String memberAppSecret;
    @Value("${wx.conf.appId}")
    private String wxAppId;
    @Autowired
    private RestTemplate restTemplate;
    public  String getAccessToken() {
        Object o = redisTemplate.opsForValue().get("accessToken");
        if(o!=null){
            return o.toString();
        }
        String requestUrl = MessageFormat.format(ACCESS_TOKEN_URL,wxAppId,memberAppSecret);
        String respBody = restTemplate.getForEntity(requestUrl, String.class).getBody();
        JSONObject jsonObject = JSONObject.parseObject(respBody);
        String string = jsonObject.getString("access_token");
        redisTemplate.opsForValue().set("accessToken", string,5000, TimeUnit.SECONDS);
        return string;
    }
    @ApiOperation(value = "新增股东管理",response = SysUser.class)
    @Log(title = "公司信息-新增股东", businessType = BusinessType.INSERT)
    @PostMapping("/system/user/add")
    public R<String> add(@RequestBody SysUser user)
    {
        user.setUserName(user.getUserName());
        if (!userService.checkUserNameUnique(user))
        {
            return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
        }
        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
        {
            return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setCreateBy(getUsername());
        user.setPassword(SecurityUtils.encryptPassword("123456"));
        // 随机10数数字
        user.setCode(RandomUtil.randomNumbers(10));
        userService.insertUser(user);
        if(user.getCompanyId()!=null){
            String accessToken = getAccessToken();
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("page", "pages/home/home");
            param.put("width", 430); //二维码尺寸
            param.put("scene", "userId=" + user.getUserId()); //二维码尺寸
            param.put("env_version", "trial"); //二维码尺寸
            HttpRequest post = HttpUtil.createPost(url);
            post.body(JSON.toJSONString(param));
            byte[] result = post.execute().bodyBytes();
            // base64
            String img = Base64.getEncoder().encodeToString(result);
            // 后台用户的小程序码
            redisTemplate.opsForValue().set("ADMIN_WX_IMG" + user.getUserId(), img);
        }
        return R.ok();
    }
    @ApiOperation(value = "修改股东管理")
    @Log(title = "公司信息-修改股东", businessType = BusinessType.UPDATE)
    @PostMapping("/system/user/edit")
    public R edit(@RequestBody SysUser user)
    {
        user.setUserName(user.getPhonenumber());
//        userService.checkUserAllowed(user);
//        userService.checkUserDataScope(user.getUserId());
        if (!userService.checkUserNameUnique(user))
        {
            return R.fail("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
        }
        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
        {
            return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setUpdateBy(getUsername());
        if(StringUtils.isNotEmpty(user.getPassword())){
            user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        }
        return R.ok(userService.updateUser(user));
    }
    @ApiOperation(value = "批量删除股东")
    @Log(title = "公司信息-批量删除股东", businessType = BusinessType.DELETE)
    @DeleteMapping("/system/user/deleteById/{ids}")
    public AjaxResult remove(@PathVariable String ids)
    {
        String[] split = ids.split(",");
        List<Long> userIds = new ArrayList<>();
        for (String s : split) {
            userIds.add(Long.valueOf(s));
        }
        if (userIds.contains(getUserId()))
        {
            return error("当前用户不能删除");
        }
        return AjaxResult.success(userService.deleteUserByIds(userIds));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -1,6 +1,10 @@
package com.ruoyi.web.controller.system;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.controller.BaseController;
@@ -23,13 +27,15 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -181,10 +187,57 @@
        }
        user.setCreateBy(getUsername());
        user.setPassword(SecurityUtils.encryptPassword("123456"));
        // 随机10数数字
        user.setCode(RandomUtil.randomNumbers(10));
        userService.insertUser(user);
        if(user.getCompanyId()!=null){
            String accessToken = getAccessToken();
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("page", "pages/home/home");
            param.put("width", 430); //二维码尺寸
            param.put("scene", "userId=" + user.getUserId()); //二维码尺寸
            param.put("env_version", "trial"); //二维码尺寸
            HttpRequest post = HttpUtil.createPost(url);
            post.body(JSON.toJSONString(param));
            byte[] result = post.execute().bodyBytes();
            // base64
            String img = Base64.getEncoder().encodeToString(result);
            // 后台用户的小程序码
            redisTemplate.opsForValue().set("ADMIN_WX_IMG" + user.getUserId(), img);
        }
        return R.ok();
    }
    @Value("${wx.url}")
    private String ACCESS_TOKEN_URL;
    @Value("${wx.conf.secretId}")
    private String memberAppSecret;
    @Value("${wx.conf.appId}")
    private String wxAppId;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private RedisTemplate redisTemplate;
    public  String getAccessToken() {
        Object o = redisTemplate.opsForValue().get("accessToken");
        if(o!=null){
            return o.toString();
        }
        String requestUrl = MessageFormat.format(ACCESS_TOKEN_URL,wxAppId,memberAppSecret);
        String respBody = restTemplate.getForEntity(requestUrl, String.class).getBody();
        JSONObject jsonObject = JSONObject.parseObject(respBody);
        String string = jsonObject.getString("access_token");
        redisTemplate.opsForValue().set("accessToken", string,5000,TimeUnit.SECONDS);
        return string;
    }
    /**
     * 账号继承
     */
ruoyi-admin/src/main/resources/application-test.yml
@@ -192,9 +192,10 @@
    accessPath: /file/
    allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF|.xls|.xlsx|.rar|.zip|.rar
wx:
  url: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}
  conf:
    appId:
    secretId:
    appId: 11
    secretId: 22
payment:
  wx:
    # 微信appid
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.query.SysUserQuery;
@@ -196,4 +197,9 @@
     * @return
     */
    SysUser selectByCode(@Param("spreadCode") String spreadCode);
    SysUser getUserByCompanyId(@Param("id") Integer id);
    List<SysUser> getCompanyUserList(@Param("page") Page<SysUser> page, @Param("companyId") Integer companyId);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TCompany.java
@@ -77,7 +77,7 @@
    @ApiModelProperty(value = "添加人id")
    @TableField("create_user_id")
    private Integer createUserId;
    private Long createUserId;
    @ApiModelProperty(value = "修改时间")
    @TableField("update_time")
@@ -85,7 +85,15 @@
    @ApiModelProperty(value = "修改人id")
    @TableField("update_user_id")
    private Integer updateUserId;
    private Long updateUserId;
    @ApiModelProperty(value = "账号")
    @TableField(exist = false)
    private String account;
    @ApiModelProperty(value = "密码")
    @TableField(exist = false)
    private String password;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/CompanyUserQuery.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("公司人员列表query")
public class CompanyUserQuery extends BasePage {
    @ApiModelProperty("公司id")
    private Integer companyId;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TCompanyQuery.java
New file
@@ -0,0 +1,15 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("公司查询参数")
public class TCompanyQuery extends BasePage {
    @ApiModelProperty("公司名称")
    private String name;
    @ApiModelProperty("负责人")
    private String chargePerson;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.query.SysUserQuery;
@@ -292,4 +293,9 @@
    void updateUserInherit(SysUser user);
    SysUser selectByCode(@NotNull(message = "推广码不能为空") String spreadCode);
    SysUser getUserByCompanyId(Integer id);
    List<SysUser> getCompanyUserList(Page<SysUser> page, Integer companyId);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.constant.UserConstants;
@@ -27,6 +28,7 @@
import javax.validation.Validator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -727,4 +729,14 @@
    public SysUser selectByCode(String spreadCode) {
        return userMapper.selectByCode(spreadCode);
    }
    @Override
    public SysUser getUserByCompanyId(Integer id) {
        return userMapper.getUserByCompanyId(id);
    }
    @Override
    public List<SysUser> getCompanyUserList(Page<SysUser> page, Integer companyId) {
        return userMapper.getCompanyUserList(page,companyId);
    }
}
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -293,8 +293,15 @@
            role_type = 3 and del_flag = 0 and code = #{spreadCode}
        </where>
    </select>
    <select id="getUserByCompanyId" resultType="com.ruoyi.common.core.domain.entity.SysUser"
            parameterType="java.lang.Integer">
        select * from sys_user where company_id = #{id} and del_flag = 0
    </select>
    <select id="getCompanyUserList" resultType="com.ruoyi.common.core.domain.entity.SysUser">
        select * from sys_user where company_id = #{companyId} and del_flag = 0
    </select>
    <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
    <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
         insert into sys_user(
             <if test="userId != null and userId != 0">user_id,</if>
             <if test="deptId != null and deptId != 0">dept_id,</if>
@@ -309,6 +316,9 @@
             <if test="status != null and status != ''">status,</if>
             <if test="createBy != null and createBy != ''">create_by,</if>
             <if test="remark != null and remark != ''">remark,</if>
             <if test="code != null and code != ''">code,</if>
             <if test="isAdmin != null">is_admin,</if>
             <if test="roleType != null">role_type,</if>
             create_time
         )values(
             <if test="userId != null and userId != ''">#{userId},</if>
@@ -324,6 +334,9 @@
             <if test="status != null and status != ''">#{status},</if>
             <if test="createBy != null and createBy != ''">#{createBy},</if>
             <if test="remark != null and remark != ''">#{remark},</if>
             <if test="code != null and code != ''">#{code},</if>
             <if test="isAdmin != null">#{isAdmin},</if>
             <if test="roleType != null">#{roleType},</if>
             sysdate()
         )
    </insert>
@@ -346,6 +359,7 @@
             <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
             <if test="remark != null">remark = #{remark},</if>
            <if test="disableRemark != null">disable_remark = #{disableRemark},</if>
            <if test="companyId != null">company_id = #{companyId},</if>
             update_time = sysdate()
         </set>
         where user_id = #{userId}