Selaa lähdekoodia

Merge branch 'feature/asyncOrder' of http://git.aseanbusiness.cn/qzyReal/market-server into feature/asyncOrder

qzyReal 1 vuosi sitten
vanhempi
commit
f6acb9ed31

+ 8 - 0
sp-core/sp-api/src/main/java/com/pj/api/client/admin/AdminInterface.java

@@ -82,4 +82,12 @@ public interface AdminInterface {
     @PostMapping("AppUser/rpc/createAppAccount")
     public void createAccount(@RequestBody AppUserCreateDTO createDTO);
 
+
+    /**
+     * 创建合作社代表后台管理账号
+     * @param dto
+     */
+    @PostMapping("admin/rpc/createAdmin")
+    public void createAdmin(@RequestBody AdminCreateDto dto);
+
 }

+ 5 - 0
sp-core/sp-api/src/main/java/com/pj/api/client/admin/AdminInterfaceFallback.java

@@ -80,6 +80,11 @@ public class AdminInterfaceFallback implements FallbackFactory<AdminInterface> {
 
             }
 
+            @Override
+            public void createAdmin(AdminCreateDto dto) {
+
+            }
+
         };
     }
 

+ 70 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/AdminCreateDto.java

@@ -0,0 +1,70 @@
+package com.pj.api.dto;
+
+import java.io.Serializable;
+
+public class AdminCreateDto implements Serializable {
+
+    /**
+     * 账号
+     */
+    private String name;
+    /**
+     * 所属互市ID
+     */
+    private Long tradeAreaId;
+
+    /**
+     * 类型(00=运营管理者,01=合作社)
+     */
+    private String type;
+
+
+    /**
+     * 密码,发短信生成
+     */
+    private String password;
+
+    /** 所属角色id */
+    public Integer roleId;
+
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getTradeAreaId() {
+        return tradeAreaId;
+    }
+
+    public void setTradeAreaId(Long tradeAreaId) {
+        this.tradeAreaId = tradeAreaId;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Integer getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Integer roleId) {
+        this.roleId = roleId;
+    }
+}

+ 105 - 0
sp-core/sp-base/src/main/java/com/pj/utils/Aes.java

@@ -0,0 +1,105 @@
+package com.pj.utils;
+
+import com.alibaba.druid.util.StringUtils;
+import sun.misc.BASE64Decoder;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.spec.SecretKeySpec;
+import java.math.BigInteger;
+
+public class Aes {
+
+    //密钥 (需要前端和后端保持一致)
+    private static final String KEY = "abcdefgabcdefg12";
+    //算法
+    private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";
+
+    /**
+     * aes解密
+     *
+     * @param encrypt 内容
+     * @return
+     * @throws Exception
+     */
+    public static String aesDecrypt(String encrypt) {
+        try {
+            return aesDecrypt(encrypt, KEY);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "";
+        }
+    }
+
+    /**
+     * 将byte[]转为各种进制的字符串
+     *
+     * @param bytes byte[]
+     * @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制
+     * @return 转换后的字符串
+     */
+    public static String binary(byte[] bytes, int radix) {
+        return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数
+    }
+
+    /**
+     * base 64 decode
+     *
+     * @param base64Code 待解码的base 64 code
+     * @return 解码后的byte[]
+     * @throws Exception
+     */
+    public static byte[] base64Decode(String base64Code) throws Exception {
+        return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);
+    }
+
+
+    /**
+     * AES加密
+     *
+     * @param content    待加密的内容
+     * @param encryptKey 加密密钥
+     * @return 加密后的byte[]
+     * @throws Exception
+     */
+    public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {
+        KeyGenerator kgen = KeyGenerator.getInstance("AES");
+        kgen.init(128);
+        Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
+        cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));
+
+        return cipher.doFinal(content.getBytes("utf-8"));
+    }
+
+
+    /**
+     * AES解密
+     *
+     * @param encryptBytes 待解密的byte[]
+     * @param decryptKey   解密密钥
+     * @return 解密后的String
+     * @throws Exception
+     */
+    public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {
+        KeyGenerator kgen = KeyGenerator.getInstance("AES");
+        kgen.init(128);
+
+        Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
+        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));
+        byte[] decryptBytes = cipher.doFinal(encryptBytes);
+        return new String(decryptBytes);
+    }
+
+
+    /**
+     * 将base 64 code AES解密
+     *
+     * @param encryptStr 待解密的base 64 code
+     * @param decryptKey 解密密钥
+     * @return 解密后的string
+     * @throws Exception
+     */
+    public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {
+        return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);
+    }
+}

+ 17 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_cooperative/TbCooperativeService.java

@@ -1,11 +1,15 @@
 package com.pj.tb_cooperative;
 
+import cn.hutool.core.util.RandomUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.pj.api.consts.FeignFactory;
+import com.pj.api.dto.AdminCreateDto;
 import com.pj.api.dto.CooperativeDto;
 import com.pj.api.dto.HtCooperativeDto;
+import com.pj.current.config.SystemObject;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.enummj.DeleteStatus;
 import com.pj.tb_trade_area.TbTradeArea;
@@ -103,6 +107,19 @@ public class TbCooperativeService extends ServiceImpl<TbCooperativeMapper, TbCoo
             tbCooperative.setCreateTime(new Date());
             //新增
             boolean save = this.save(tbCooperative);
+            //新增的同时给合作社代表创建一个登陆后台的管理账号
+            if(save){
+                //随机生成6位密码
+                String code = RandomUtil.randomNumbers(6);
+                SystemObject.smsFactory.handler().sendSMS(cooperativeDto.getCorrepTel(), "您的密码是" + code + "。请及时修改密码");
+                AdminCreateDto dto=new AdminCreateDto();
+                dto.setTradeAreaId(Long.parseLong(cooperativeDto.getFieldCode()));
+                dto.setPassword(code);
+                dto.setName(cooperativeDto.getCorrepTel());
+                dto.setRoleId(99); //所属角色ID,当前是99
+                dto.setType("01");//类型(00=运营管理者,01=合作社)
+                FeignFactory.adminInterface.createAdmin(dto);
+            }
             return save;
         }
         tbCooperative.setName(cooperativeDto.getCorrepName());

+ 10 - 0
sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserController.java

@@ -4,9 +4,11 @@ import java.util.List;
 
 import com.pj.api.dto.*;
 
+import com.pj.project.app_user.dto.PassDto;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import com.pj.utils.sg.*;
@@ -61,6 +63,14 @@ public class AppUserController {
 		return AjaxJson.getSuccess();
 	}
 
+	/** 修改密码 */
+	@RequestMapping("pass")
+	@SaCheckPermission( AppUser.PERMISSION_CODE_EDIT)
+	public AjaxJson pass(@Validated PassDto dto){
+		System.out.println("dto:"+dto.getPassword());
+		return AjaxJson.toAjax(appUserService.pass(dto));
+	}
+
 	/** 查 - 根据id */
 	@RequestMapping("getById")
 		@SaCheckPermission(AppUser.PERMISSION_CODE)

+ 25 - 18
sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserService.java

@@ -1,20 +1,12 @@
 package com.pj.project.app_user;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.stream.Collectors;
-
 import cn.dev33.satoken.spring.SpringMVCUtil;
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.json.JSONUtil;
-import cn.hutool.log.StaticLog;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.pj.api.client.admin.AdminInterface;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.api.client.level_one_server.LevelOneServerInterface;
 import com.pj.api.client.level_two_server.LevelTwoServerInterface;
 import com.pj.api.client.transport.TransportInterface;
@@ -26,9 +18,9 @@ import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.enummj.DeleteStatus;
 import com.pj.enummj.IsLock;
-import com.pj.enummj.Status;
 import com.pj.project.app_user.dto.ForgetPasswordDto;
 import com.pj.project.app_user.dto.LoginDto;
+import com.pj.project.app_user.dto.PassDto;
 import com.pj.project.app_user.dto.RegisterDto;
 import com.pj.project.app_user.vo.AppUserVo;
 import com.pj.project.app_user_login_log.AppUserLoginLog;
@@ -36,23 +28,23 @@ import com.pj.project.app_user_login_log.AppUserLoginLogService;
 import com.pj.project.re_role_menu.ReRoleMenu;
 import com.pj.project.re_role_menu.ReRoleMenuMapper;
 import com.pj.retry.SmsRetryService;
-import com.pj.sms.factory.SmsFactory;
+import com.pj.utils.Aes;
 import com.pj.utils.cache.RedisUtil;
 import com.pj.utils.sg.AjaxError;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.sg.WebNbUtil;
 import com.pj.utils.so.SoMap;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -128,6 +120,19 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
     }
 
     /**
+     * 修改密码
+     * @param dto
+     * @return
+     */
+    boolean pass(PassDto dto) {
+        AppUser user=new AppUser();
+        user.setId(dto.getId());
+        user.setUpdateTime(new Date());
+        user.setPassword(passwordEncoder.encode(dto.getPassword()));
+        return updateById(user);
+    }
+
+    /**
      * 查
      */
     AppUser getById(Long id) {
@@ -201,6 +206,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
      */
     boolean register(RegisterDto registerDto) {
         if (registerDto == null) return false;
+        registerDto.setPhone(Aes.aesDecrypt(registerDto.getPhone()));
         //手机号去重
         String phone = registerDto.getPhone();
         if (appUserMapper.selectList(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, phone).eq(AppUser::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode())).size() != 0)
@@ -226,7 +232,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
         //注册身份
         appUser.setUserType(registerDto.getType());
         //加密并设置登陆密码
-        String password = registerDto.getPassword();
+        String password =Aes.aesDecrypt(registerDto.getPassword());
         String encode = passwordEncoder.encode(password);
         appUser.setPassword(encode);
         //创建单位
@@ -247,6 +253,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
      * 用户登录
      */
     AjaxJson login(LoginDto dto) {
+        dto.setPhone(Aes.aesDecrypt(dto.getPhone()));
         //登陆日志信息
         AppUserLoginLog loginLog = new AppUserLoginLog();
         BeanUtils.copyProperties(dto, loginLog);
@@ -272,7 +279,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
         AppUser appUser = userList.get(0);
         //比对密码
         String userPassword = appUser.getPassword();
-        boolean matches = passwordEncoder.matches(dto.getPassword(), userPassword);
+        boolean matches = passwordEncoder.matches(Aes.aesDecrypt(dto.getPassword()),userPassword);
         if (!matches) {
             loginLog.setStatus("1");
             appUserLoginLogService.save(loginLog);

+ 16 - 0
sp-service/sp-admin/src/main/java/com/pj/project/app_user/dto/PassDto.java

@@ -0,0 +1,16 @@
+package com.pj.project.app_user.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+@Data
+public class PassDto {
+
+    @NotNull(message = "id不能为空!")
+    private Long id;
+
+    @Size(min = 8, message = "密码不能少于8位")
+    private String password;
+}

+ 13 - 0
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java

@@ -2,7 +2,10 @@ package com.pj.project4sp.admin;
 
 import java.util.List;
 
+import com.pj.api.dto.AdminCreateDto;
+import com.pj.current.config.SystemObject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -44,6 +47,16 @@ public class SpAdminController {
     }
 
     /**
+     *
+     * @param dto
+     * @return
+     */
+    @PostMapping("rpc/createAdmin")
+    AjaxJson createAdmin(AdminCreateDto dto) {
+        return AjaxJson.toAjax(spAdminService.createAdmin(dto));
+    }
+
+    /**
      * 删
      */
     @RequestMapping("delete")

+ 24 - 0
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminService.java

@@ -1,5 +1,6 @@
 package com.pj.project4sp.admin;
 
+import com.pj.api.dto.AdminCreateDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -24,6 +25,29 @@ public class SpAdminService {
 	
 	@Autowired
 	SpAdminPasswordService spAdminPasswordService;
+
+
+	/**
+	 * 创建合作社代表后台管理账号
+	 * @param dto
+	 * @return
+	 */
+	boolean createAdmin(AdminCreateDto dto){
+		SpAdmin admin=spAdminMapper.getByName(dto.getName());
+		if(admin==null){
+			admin.setName(dto.getName());
+			admin.setType(dto.getType());//合作社
+			admin.setTradeAreaId(dto.getTradeAreaId());
+			admin.setRoleId(dto.getRoleId());//合作社角色ID
+			spAdminMapper.add(admin);
+			// 获取主键
+			long id = SP.publicMapper.getPrimarykey();
+			// 更改密码(md5与明文)
+			spAdminPasswordService.updatePassword(id,dto.getPassword());
+			return true;
+		}
+		return false;
+	}
 	
 	
 	/**