diff --git a/cweb/src/main/java/com/CWebApplication.java b/cweb/src/main/java/com/CWebApplication.java index de6b8a0..9093472 100644 --- a/cweb/src/main/java/com/CWebApplication.java +++ b/cweb/src/main/java/com/CWebApplication.java @@ -19,7 +19,7 @@ public class CWebApplication { public static void main( String[] args ) { - ApplicationContext app = SpringApplication.run(CWebApplication.class, args); + ApplicationContext app = SpringApplication.run(CWebApplication.class, args); SpringContextUtil.setApplicationContext(app); } diff --git a/cweb/src/main/java/com/hfkj/controller/ClientController.java b/cweb/src/main/java/com/hfkj/controller/ClientController.java index b605fa3..099b954 100644 --- a/cweb/src/main/java/com/hfkj/controller/ClientController.java +++ b/cweb/src/main/java/com/hfkj/controller/ClientController.java @@ -53,6 +53,9 @@ public class ClientController { ) { throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); } + // 邀请码人id + Long inviteUseId = body.getLong("inviteUseId"); + // 手机号 String phone = body.getString("phone"); // 校验手机号格式 if (!MemberValidateUtil.validatePhone(phone)) { @@ -71,7 +74,7 @@ public class ClientController { } redisUtil.del("SMS_LOGIN_CODE:" + phone); - return ResponseMsgUtil.success(userService.login(phone, UserLoginType.SMS, new HashMap<>())); + return ResponseMsgUtil.success(userService.login(phone, UserLoginType.SMS, new HashMap<>(), inviteUseId)); } catch (Exception e) { return ResponseMsgUtil.exception(e); diff --git a/cweb/src/main/java/com/hfkj/controller/UserController.java b/cweb/src/main/java/com/hfkj/controller/UserController.java index e71e973..42308a7 100644 --- a/cweb/src/main/java/com/hfkj/controller/UserController.java +++ b/cweb/src/main/java/com/hfkj/controller/UserController.java @@ -61,6 +61,23 @@ public class UserController { } } + @RequestMapping(value = "/updateWechat", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "修改用户微信号") + public ResponseData updateWechat(@RequestBody JSONObject body) { + try { + if (body == null || StringUtils.isBlank(body.getString("wechatNum"))) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); + userService.updateWechatNum(userSession.getUser().getId(), body.getString("wechatNum")); + return ResponseMsgUtil.success("操作成功"); + + } catch (Exception e) { + return ResponseMsgUtil.exception(e); + } + } + @RequestMapping(value = "/bindPhone", method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "绑定手机号") @@ -83,6 +100,9 @@ public class UserController { if (StringUtils.isBlank(body.getString("smsCode"))) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入短信验证码"); } + if (userService.getUser(phone) != null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "手机号已被绑定"); + } // 手机号的验证码 Object phoneCodeObject = redisUtil.get("SMS_BIND_PHONE_CODE:" + phone); if (phoneCodeObject == null) { @@ -103,6 +123,56 @@ public class UserController { } } + @RequestMapping(value = "/bindInviteUser", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "绑定邀请人Id") + public ResponseData bindInviteUser(@RequestBody JSONObject body) { + try { + if (body == null || body.getLong("inviteUseId") == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); + if (StringUtils.isNotBlank(userSession.getUser().getPhone())) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "手机号已绑定"); + } + // 绑定邀请人 + userService.bindInviteUser(userSession.getUser().getId(), body.getLong("inviteUseId")); + + return ResponseMsgUtil.success(userCenter.getSessionModel(UserSessionObject.class)); + + } catch (Exception e) { + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/verifyUpdPhoneSmsCode", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "验证修改手机号验证码") + public ResponseData verifyUpdPhoneSmsCode(@RequestBody JSONObject body) { + try { + if (body == null + || StringUtils.isBlank(body.getString("phone")) + || StringUtils.isBlank(body.getString("smsCode"))) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + String phone = body.getString("phone"); + // 手机号的验证码 + Object phoneCodeObject = redisUtil.get("SMS_UPDATE_PHONE_CODE:" + phone); + if (phoneCodeObject == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误或已失效"); + } + if (!body.getString("smsCode").equals(phoneCodeObject.toString())) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误或已失效"); + } + redisUtil.del("SMS_UPDATE_PHONE_CODE:" + phone); + + return ResponseMsgUtil.success(true); + + } catch (Exception e) { + return ResponseMsgUtil.exception(e); + } + } + @RequestMapping(value = "/updatePhone", method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "修改手机号") @@ -121,6 +191,9 @@ public class UserController { if (userSession.getUser().getPhone().equals(phone)) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "新手机号与现绑定手机号相同"); } + if (userService.getUser(phone) != null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "手机号已被绑定"); + } // 校验手机号格式 if (!MemberValidateUtil.validatePhone(phone)) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号"); @@ -131,10 +204,10 @@ public class UserController { // 手机号的验证码 Object phoneCodeObject = redisUtil.get("SMS_UPDATE_PHONE_CODE:" + phone); if (phoneCodeObject == null) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误或已失效"); } if (!body.getString("smsCode").equals(phoneCodeObject.toString())) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误或已失效"); } redisUtil.del("SMS_UPDATE_PHONE_CODE:" + phone); diff --git a/cweb/src/main/java/com/hfkj/controller/UserInviteCodeController.java b/cweb/src/main/java/com/hfkj/controller/UserInviteCodeController.java new file mode 100644 index 0000000..563f414 --- /dev/null +++ b/cweb/src/main/java/com/hfkj/controller/UserInviteCodeController.java @@ -0,0 +1,60 @@ +package com.hfkj.controller; + +import com.hfkj.common.security.UserCenter; +import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.entity.BsUserInviteCode; +import com.hfkj.model.ResponseData; +import com.hfkj.model.UserSessionObject; +import com.hfkj.service.user.BsUserInviteCodeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * @className: ClientController + * @author: HuRui + * @date: 2024/9/6 + **/ +@Controller +@RequestMapping(value="/userInviteCode") +@Api(value="用户邀请码") +public class UserInviteCodeController { + @Resource + private BsUserInviteCodeService userInviteCodeService; + @Autowired + private UserCenter userCenter; + + @RequestMapping(value = "/query", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "获取邀请码") + public ResponseData query() { + try { + // 获取用户session + UserSessionObject session = userCenter.getSessionModel(UserSessionObject.class); + // 查询用户邀请码 + BsUserInviteCode userInviteCode = userInviteCodeService.getDetail(session.getUser().getId()); + if (userInviteCode == null) { + // 没有就创建 + userInviteCode = userInviteCodeService.create(session.getUser().getId()); + } + Map param = new HashMap<>(); + // 邀请码 + param.put("inviteUserId", userInviteCode.getUserId()); + // 二维码 + param.put("qrCode", userInviteCode.getQrCodeImg()); + return ResponseMsgUtil.success(param); + + } catch (Exception e) { + return ResponseMsgUtil.exception(e); + } + } + +} diff --git a/null/userInviteCode/02856152.png b/null/userInviteCode/02856152.png new file mode 100644 index 0000000..b0d62d0 Binary files /dev/null and b/null/userInviteCode/02856152.png differ diff --git a/null/userInviteCode/21526357.png b/null/userInviteCode/21526357.png new file mode 100644 index 0000000..f8aa959 Binary files /dev/null and b/null/userInviteCode/21526357.png differ diff --git a/null/userInviteCode/24869382.png b/null/userInviteCode/24869382.png new file mode 100644 index 0000000..6d43975 Binary files /dev/null and b/null/userInviteCode/24869382.png differ diff --git a/null/userInviteCode/30044329.png b/null/userInviteCode/30044329.png new file mode 100644 index 0000000..88e479b Binary files /dev/null and b/null/userInviteCode/30044329.png differ diff --git a/null/userInviteCode/34612530.png b/null/userInviteCode/34612530.png new file mode 100644 index 0000000..85f4f6b Binary files /dev/null and b/null/userInviteCode/34612530.png differ diff --git a/service/src/main/java/com/hfkj/common/QRCodeGenerator.java b/service/src/main/java/com/hfkj/common/QRCodeGenerator.java index 0e08f01..1b0acef 100644 --- a/service/src/main/java/com/hfkj/common/QRCodeGenerator.java +++ b/service/src/main/java/com/hfkj/common/QRCodeGenerator.java @@ -5,7 +5,11 @@ import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; +import com.hfkj.config.CommonSysConst; +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -16,6 +20,13 @@ import java.io.IOException; */ public class QRCodeGenerator { + /** + * 生成 + * @param text 内容 + * @param width 宽度 + * @param height 高度 + * @param filePath 存放路径 + */ public static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); @@ -27,7 +38,22 @@ public class QRCodeGenerator { } //Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToFile(bitMatrix, "PNG", file); + } + /** + * 二维码生产自定义图片 + * @param path + * @param bgPath + * @param x + * @param y + * @throws Exception + */ + public static void overlapImage(String path , String bgPath , int x, int y) throws Exception { + BufferedImage read = ImageIO.read(new File(CommonSysConst.getSysConfig().getFilesystem() + bgPath)); + Image image = ImageIO.read(new File(CommonSysConst.getSysConfig().getFilesystem() + path)); + Graphics graphics = read.getGraphics(); + graphics.drawImage(image, x ,y, null); + ImageIO.write(read , "png" , new File(CommonSysConst.getSysConfig().getFilesystem() + "/" + path)); } public static void main(String[] args) { diff --git a/service/src/main/java/com/hfkj/common/utils/RandomUtils.java b/service/src/main/java/com/hfkj/common/utils/RandomUtils.java new file mode 100644 index 0000000..5f993a3 --- /dev/null +++ b/service/src/main/java/com/hfkj/common/utils/RandomUtils.java @@ -0,0 +1,31 @@ +package com.hfkj.common.utils; + +import java.util.Random; + +/** + * + * @className: RandomUtils + * @author: HuRui + * @date: 2024/4/24 + **/ +public class RandomUtils { + + /** + * 生成随机数 + * @param length 长度 + * @param zero 是否包含零 + * @return + */ + public static String number(int length, boolean zero) { + String sl = "123456789"; + if (zero) { + sl += "0"; + } + StringBuilder sb = new StringBuilder(); + for(int i = 0 ; i < length ; i ++){ + sb.append(sl.charAt(new Random().nextInt(sl.length()))); + } + return sb.toString(); + } + +} diff --git a/service/src/main/java/com/hfkj/config/CommonSysConfig.java b/service/src/main/java/com/hfkj/config/CommonSysConfig.java index 19aee5a..abdb265 100644 --- a/service/src/main/java/com/hfkj/config/CommonSysConfig.java +++ b/service/src/main/java/com/hfkj/config/CommonSysConfig.java @@ -11,6 +11,16 @@ import org.springframework.stereotype.Component; @Data public class CommonSysConfig { + /** + * 域名 + */ + private String domain; + + /** + * 文件路径 + */ + private String filesystem; + /** * 淘宝请求参数 */ diff --git a/service/src/main/java/com/hfkj/dao/BsUserInviteCodeMapper.java b/service/src/main/java/com/hfkj/dao/BsUserInviteCodeMapper.java new file mode 100644 index 0000000..3f489ed --- /dev/null +++ b/service/src/main/java/com/hfkj/dao/BsUserInviteCodeMapper.java @@ -0,0 +1,108 @@ +package com.hfkj.dao; + +import com.hfkj.entity.BsUserInviteCode; +import com.hfkj.entity.BsUserInviteCodeExample; +import java.util.List; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.DeleteProvider; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.SelectProvider; +import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.UpdateProvider; +import org.apache.ibatis.type.JdbcType; +import org.springframework.stereotype.Repository; + +/** + * + * 代码由工具生成,请勿修改!!! + * 如果需要扩展请在其父类进行扩展 + * + **/ +@Repository +public interface BsUserInviteCodeMapper extends BsUserInviteCodeMapperExt { + @SelectProvider(type=BsUserInviteCodeSqlProvider.class, method="countByExample") + long countByExample(BsUserInviteCodeExample example); + + @DeleteProvider(type=BsUserInviteCodeSqlProvider.class, method="deleteByExample") + int deleteByExample(BsUserInviteCodeExample example); + + @Delete({ + "delete from bs_user_invite_code", + "where id = #{id,jdbcType=BIGINT}" + }) + int deleteByPrimaryKey(Long id); + + @Insert({ + "insert into bs_user_invite_code (user_id, qr_code_img, ", + "`status`, create_time, ", + "ext_1, ext_2, ext_3)", + "values (#{userId,jdbcType=BIGINT}, #{qrCodeImg,jdbcType=VARCHAR}, ", + "#{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", + "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" + }) + @Options(useGeneratedKeys=true,keyProperty="id") + int insert(BsUserInviteCode record); + + @InsertProvider(type=BsUserInviteCodeSqlProvider.class, method="insertSelective") + @Options(useGeneratedKeys=true,keyProperty="id") + int insertSelective(BsUserInviteCode record); + + @SelectProvider(type=BsUserInviteCodeSqlProvider.class, method="selectByExample") + @Results({ + @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true), + @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT), + @Result(column="qr_code_img", property="qrCodeImg", jdbcType=JdbcType.VARCHAR), + @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), + @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR) + }) + List selectByExample(BsUserInviteCodeExample example); + + @Select({ + "select", + "id, user_id, qr_code_img, `status`, create_time, ext_1, ext_2, ext_3", + "from bs_user_invite_code", + "where id = #{id,jdbcType=BIGINT}" + }) + @Results({ + @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true), + @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT), + @Result(column="qr_code_img", property="qrCodeImg", jdbcType=JdbcType.VARCHAR), + @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), + @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR) + }) + BsUserInviteCode selectByPrimaryKey(Long id); + + @UpdateProvider(type=BsUserInviteCodeSqlProvider.class, method="updateByExampleSelective") + int updateByExampleSelective(@Param("record") BsUserInviteCode record, @Param("example") BsUserInviteCodeExample example); + + @UpdateProvider(type=BsUserInviteCodeSqlProvider.class, method="updateByExample") + int updateByExample(@Param("record") BsUserInviteCode record, @Param("example") BsUserInviteCodeExample example); + + @UpdateProvider(type=BsUserInviteCodeSqlProvider.class, method="updateByPrimaryKeySelective") + int updateByPrimaryKeySelective(BsUserInviteCode record); + + @Update({ + "update bs_user_invite_code", + "set user_id = #{userId,jdbcType=BIGINT},", + "qr_code_img = #{qrCodeImg,jdbcType=VARCHAR},", + "`status` = #{status,jdbcType=INTEGER},", + "create_time = #{createTime,jdbcType=TIMESTAMP},", + "ext_1 = #{ext1,jdbcType=VARCHAR},", + "ext_2 = #{ext2,jdbcType=VARCHAR},", + "ext_3 = #{ext3,jdbcType=VARCHAR}", + "where id = #{id,jdbcType=BIGINT}" + }) + int updateByPrimaryKey(BsUserInviteCode record); +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/dao/BsUserInviteCodeMapperExt.java b/service/src/main/java/com/hfkj/dao/BsUserInviteCodeMapperExt.java new file mode 100644 index 0000000..afe45c0 --- /dev/null +++ b/service/src/main/java/com/hfkj/dao/BsUserInviteCodeMapperExt.java @@ -0,0 +1,7 @@ +package com.hfkj.dao; + +/** + * mapper扩展类 + */ +public interface BsUserInviteCodeMapperExt { +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/dao/BsUserInviteCodeSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsUserInviteCodeSqlProvider.java new file mode 100644 index 0000000..e7b58b6 --- /dev/null +++ b/service/src/main/java/com/hfkj/dao/BsUserInviteCodeSqlProvider.java @@ -0,0 +1,276 @@ +package com.hfkj.dao; + +import com.hfkj.entity.BsUserInviteCode; +import com.hfkj.entity.BsUserInviteCodeExample.Criteria; +import com.hfkj.entity.BsUserInviteCodeExample.Criterion; +import com.hfkj.entity.BsUserInviteCodeExample; +import java.util.List; +import java.util.Map; +import org.apache.ibatis.jdbc.SQL; + +public class BsUserInviteCodeSqlProvider { + + public String countByExample(BsUserInviteCodeExample example) { + SQL sql = new SQL(); + sql.SELECT("count(*)").FROM("bs_user_invite_code"); + applyWhere(sql, example, false); + return sql.toString(); + } + + public String deleteByExample(BsUserInviteCodeExample example) { + SQL sql = new SQL(); + sql.DELETE_FROM("bs_user_invite_code"); + applyWhere(sql, example, false); + return sql.toString(); + } + + public String insertSelective(BsUserInviteCode record) { + SQL sql = new SQL(); + sql.INSERT_INTO("bs_user_invite_code"); + + if (record.getUserId() != null) { + sql.VALUES("user_id", "#{userId,jdbcType=BIGINT}"); + } + + if (record.getQrCodeImg() != null) { + sql.VALUES("qr_code_img", "#{qrCodeImg,jdbcType=VARCHAR}"); + } + + if (record.getStatus() != null) { + sql.VALUES("`status`", "#{status,jdbcType=INTEGER}"); + } + + if (record.getCreateTime() != null) { + sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getExt1() != null) { + sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}"); + } + + if (record.getExt2() != null) { + sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}"); + } + + if (record.getExt3() != null) { + sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}"); + } + + return sql.toString(); + } + + public String selectByExample(BsUserInviteCodeExample example) { + SQL sql = new SQL(); + if (example != null && example.isDistinct()) { + sql.SELECT_DISTINCT("id"); + } else { + sql.SELECT("id"); + } + sql.SELECT("user_id"); + sql.SELECT("qr_code_img"); + sql.SELECT("`status`"); + sql.SELECT("create_time"); + sql.SELECT("ext_1"); + sql.SELECT("ext_2"); + sql.SELECT("ext_3"); + sql.FROM("bs_user_invite_code"); + applyWhere(sql, example, false); + + if (example != null && example.getOrderByClause() != null) { + sql.ORDER_BY(example.getOrderByClause()); + } + + return sql.toString(); + } + + public String updateByExampleSelective(Map parameter) { + BsUserInviteCode record = (BsUserInviteCode) parameter.get("record"); + BsUserInviteCodeExample example = (BsUserInviteCodeExample) parameter.get("example"); + + SQL sql = new SQL(); + sql.UPDATE("bs_user_invite_code"); + + if (record.getId() != null) { + sql.SET("id = #{record.id,jdbcType=BIGINT}"); + } + + if (record.getUserId() != null) { + sql.SET("user_id = #{record.userId,jdbcType=BIGINT}"); + } + + if (record.getQrCodeImg() != null) { + sql.SET("qr_code_img = #{record.qrCodeImg,jdbcType=VARCHAR}"); + } + + if (record.getStatus() != null) { + sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); + } + + if (record.getCreateTime() != null) { + sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getExt1() != null) { + sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}"); + } + + if (record.getExt2() != null) { + sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}"); + } + + if (record.getExt3() != null) { + sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}"); + } + + applyWhere(sql, example, true); + return sql.toString(); + } + + public String updateByExample(Map parameter) { + SQL sql = new SQL(); + sql.UPDATE("bs_user_invite_code"); + + sql.SET("id = #{record.id,jdbcType=BIGINT}"); + sql.SET("user_id = #{record.userId,jdbcType=BIGINT}"); + sql.SET("qr_code_img = #{record.qrCodeImg,jdbcType=VARCHAR}"); + sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); + sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); + sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}"); + sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}"); + sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}"); + + BsUserInviteCodeExample example = (BsUserInviteCodeExample) parameter.get("example"); + applyWhere(sql, example, true); + return sql.toString(); + } + + public String updateByPrimaryKeySelective(BsUserInviteCode record) { + SQL sql = new SQL(); + sql.UPDATE("bs_user_invite_code"); + + if (record.getUserId() != null) { + sql.SET("user_id = #{userId,jdbcType=BIGINT}"); + } + + if (record.getQrCodeImg() != null) { + sql.SET("qr_code_img = #{qrCodeImg,jdbcType=VARCHAR}"); + } + + if (record.getStatus() != null) { + sql.SET("`status` = #{status,jdbcType=INTEGER}"); + } + + if (record.getCreateTime() != null) { + sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getExt1() != null) { + sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}"); + } + + if (record.getExt2() != null) { + sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}"); + } + + if (record.getExt3() != null) { + sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}"); + } + + sql.WHERE("id = #{id,jdbcType=BIGINT}"); + + return sql.toString(); + } + + protected void applyWhere(SQL sql, BsUserInviteCodeExample example, boolean includeExamplePhrase) { + if (example == null) { + return; + } + + String parmPhrase1; + String parmPhrase1_th; + String parmPhrase2; + String parmPhrase2_th; + String parmPhrase3; + String parmPhrase3_th; + if (includeExamplePhrase) { + parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}"; + parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}"; + parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}"; + parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}"; + parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}"; + parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}"; + } else { + parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}"; + parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}"; + parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}"; + parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}"; + parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}"; + parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}"; + } + + StringBuilder sb = new StringBuilder(); + List oredCriteria = example.getOredCriteria(); + boolean firstCriteria = true; + for (int i = 0; i < oredCriteria.size(); i++) { + Criteria criteria = oredCriteria.get(i); + if (criteria.isValid()) { + if (firstCriteria) { + firstCriteria = false; + } else { + sb.append(" or "); + } + + sb.append('('); + List criterions = criteria.getAllCriteria(); + boolean firstCriterion = true; + for (int j = 0; j < criterions.size(); j++) { + Criterion criterion = criterions.get(j); + if (firstCriterion) { + firstCriterion = false; + } else { + sb.append(" and "); + } + + if (criterion.isNoValue()) { + sb.append(criterion.getCondition()); + } else if (criterion.isSingleValue()) { + if (criterion.getTypeHandler() == null) { + sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j)); + } else { + sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler())); + } + } else if (criterion.isBetweenValue()) { + if (criterion.getTypeHandler() == null) { + sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j)); + } else { + sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler())); + } + } else if (criterion.isListValue()) { + sb.append(criterion.getCondition()); + sb.append(" ("); + List listItems = (List) criterion.getValue(); + boolean comma = false; + for (int k = 0; k < listItems.size(); k++) { + if (comma) { + sb.append(", "); + } else { + comma = true; + } + if (criterion.getTypeHandler() == null) { + sb.append(String.format(parmPhrase3, i, j, k)); + } else { + sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler())); + } + } + sb.append(')'); + } + } + sb.append(')'); + } + } + + if (sb.length() > 0) { + sql.WHERE(sb.toString()); + } + } +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/dao/BsUserMapper.java b/service/src/main/java/com/hfkj/dao/BsUserMapper.java index 7f0738a..853997d 100644 --- a/service/src/main/java/com/hfkj/dao/BsUserMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsUserMapper.java @@ -40,11 +40,13 @@ public interface BsUserMapper extends BsUserMapperExt { @Insert({ "insert into bs_user (head_img, `name`, ", - "phone, grade, `status`, ", + "phone, grade, wechat_num, ", + "invite_user_id, `status`, ", "create_time, update_time, ", "ext_1, ext_2, ext_3)", "values (#{headImg,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, ", - "#{phone,jdbcType=VARCHAR}, #{grade,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, ", + "#{phone,jdbcType=VARCHAR}, #{grade,jdbcType=INTEGER}, #{wechatNum,jdbcType=VARCHAR}, ", + "#{inviteUserId,jdbcType=BIGINT}, #{status,jdbcType=INTEGER}, ", "#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ", "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" }) @@ -62,6 +64,8 @@ public interface BsUserMapper extends BsUserMapperExt { @Result(column="name", property="name", jdbcType=JdbcType.VARCHAR), @Result(column="phone", property="phone", jdbcType=JdbcType.VARCHAR), @Result(column="grade", property="grade", jdbcType=JdbcType.INTEGER), + @Result(column="wechat_num", property="wechatNum", jdbcType=JdbcType.VARCHAR), + @Result(column="invite_user_id", property="inviteUserId", jdbcType=JdbcType.BIGINT), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), @@ -73,8 +77,8 @@ public interface BsUserMapper extends BsUserMapperExt { @Select({ "select", - "id, head_img, `name`, phone, grade, `status`, create_time, update_time, ext_1, ", - "ext_2, ext_3", + "id, head_img, `name`, phone, grade, wechat_num, invite_user_id, `status`, create_time, ", + "update_time, ext_1, ext_2, ext_3", "from bs_user", "where id = #{id,jdbcType=BIGINT}" }) @@ -84,6 +88,8 @@ public interface BsUserMapper extends BsUserMapperExt { @Result(column="name", property="name", jdbcType=JdbcType.VARCHAR), @Result(column="phone", property="phone", jdbcType=JdbcType.VARCHAR), @Result(column="grade", property="grade", jdbcType=JdbcType.INTEGER), + @Result(column="wechat_num", property="wechatNum", jdbcType=JdbcType.VARCHAR), + @Result(column="invite_user_id", property="inviteUserId", jdbcType=JdbcType.BIGINT), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), @@ -108,6 +114,8 @@ public interface BsUserMapper extends BsUserMapperExt { "`name` = #{name,jdbcType=VARCHAR},", "phone = #{phone,jdbcType=VARCHAR},", "grade = #{grade,jdbcType=INTEGER},", + "wechat_num = #{wechatNum,jdbcType=VARCHAR},", + "invite_user_id = #{inviteUserId,jdbcType=BIGINT},", "`status` = #{status,jdbcType=INTEGER},", "create_time = #{createTime,jdbcType=TIMESTAMP},", "update_time = #{updateTime,jdbcType=TIMESTAMP},", diff --git a/service/src/main/java/com/hfkj/dao/BsUserSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsUserSqlProvider.java index ad9e866..cacd3f1 100644 --- a/service/src/main/java/com/hfkj/dao/BsUserSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsUserSqlProvider.java @@ -44,6 +44,14 @@ public class BsUserSqlProvider { sql.VALUES("grade", "#{grade,jdbcType=INTEGER}"); } + if (record.getWechatNum() != null) { + sql.VALUES("wechat_num", "#{wechatNum,jdbcType=VARCHAR}"); + } + + if (record.getInviteUserId() != null) { + sql.VALUES("invite_user_id", "#{inviteUserId,jdbcType=BIGINT}"); + } + if (record.getStatus() != null) { sql.VALUES("`status`", "#{status,jdbcType=INTEGER}"); } @@ -82,6 +90,8 @@ public class BsUserSqlProvider { sql.SELECT("`name`"); sql.SELECT("phone"); sql.SELECT("grade"); + sql.SELECT("wechat_num"); + sql.SELECT("invite_user_id"); sql.SELECT("`status`"); sql.SELECT("create_time"); sql.SELECT("update_time"); @@ -125,6 +135,14 @@ public class BsUserSqlProvider { sql.SET("grade = #{record.grade,jdbcType=INTEGER}"); } + if (record.getWechatNum() != null) { + sql.SET("wechat_num = #{record.wechatNum,jdbcType=VARCHAR}"); + } + + if (record.getInviteUserId() != null) { + sql.SET("invite_user_id = #{record.inviteUserId,jdbcType=BIGINT}"); + } + if (record.getStatus() != null) { sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); } @@ -162,6 +180,8 @@ public class BsUserSqlProvider { sql.SET("`name` = #{record.name,jdbcType=VARCHAR}"); sql.SET("phone = #{record.phone,jdbcType=VARCHAR}"); sql.SET("grade = #{record.grade,jdbcType=INTEGER}"); + sql.SET("wechat_num = #{record.wechatNum,jdbcType=VARCHAR}"); + sql.SET("invite_user_id = #{record.inviteUserId,jdbcType=BIGINT}"); sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}"); @@ -194,6 +214,14 @@ public class BsUserSqlProvider { sql.SET("grade = #{grade,jdbcType=INTEGER}"); } + if (record.getWechatNum() != null) { + sql.SET("wechat_num = #{wechatNum,jdbcType=VARCHAR}"); + } + + if (record.getInviteUserId() != null) { + sql.SET("invite_user_id = #{inviteUserId,jdbcType=BIGINT}"); + } + if (record.getStatus() != null) { sql.SET("`status` = #{status,jdbcType=INTEGER}"); } diff --git a/service/src/main/java/com/hfkj/entity/BsUser.java b/service/src/main/java/com/hfkj/entity/BsUser.java index 8edfedd..87f3209 100644 --- a/service/src/main/java/com/hfkj/entity/BsUser.java +++ b/service/src/main/java/com/hfkj/entity/BsUser.java @@ -38,6 +38,16 @@ public class BsUser implements Serializable { */ private Integer grade; + /** + * 微信号 + */ + private String wechatNum; + + /** + * 邀请人id + */ + private Long inviteUserId; + /** * 状态 0:删除 1:正常 2:禁用 */ @@ -101,6 +111,22 @@ public class BsUser implements Serializable { this.grade = grade; } + public String getWechatNum() { + return wechatNum; + } + + public void setWechatNum(String wechatNum) { + this.wechatNum = wechatNum; + } + + public Long getInviteUserId() { + return inviteUserId; + } + + public void setInviteUserId(Long inviteUserId) { + this.inviteUserId = inviteUserId; + } + public Integer getStatus() { return status; } @@ -166,6 +192,8 @@ public class BsUser implements Serializable { && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName())) && (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone())) && (this.getGrade() == null ? other.getGrade() == null : this.getGrade().equals(other.getGrade())) + && (this.getWechatNum() == null ? other.getWechatNum() == null : this.getWechatNum().equals(other.getWechatNum())) + && (this.getInviteUserId() == null ? other.getInviteUserId() == null : this.getInviteUserId().equals(other.getInviteUserId())) && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())) @@ -183,6 +211,8 @@ public class BsUser implements Serializable { result = prime * result + ((getName() == null) ? 0 : getName().hashCode()); result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode()); result = prime * result + ((getGrade() == null) ? 0 : getGrade().hashCode()); + result = prime * result + ((getWechatNum() == null) ? 0 : getWechatNum().hashCode()); + result = prime * result + ((getInviteUserId() == null) ? 0 : getInviteUserId().hashCode()); result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); @@ -203,6 +233,8 @@ public class BsUser implements Serializable { sb.append(", name=").append(name); sb.append(", phone=").append(phone); sb.append(", grade=").append(grade); + sb.append(", wechatNum=").append(wechatNum); + sb.append(", inviteUserId=").append(inviteUserId); sb.append(", status=").append(status); sb.append(", createTime=").append(createTime); sb.append(", updateTime=").append(updateTime); diff --git a/service/src/main/java/com/hfkj/entity/BsUserExample.java b/service/src/main/java/com/hfkj/entity/BsUserExample.java index 6ec95c8..18e634f 100644 --- a/service/src/main/java/com/hfkj/entity/BsUserExample.java +++ b/service/src/main/java/com/hfkj/entity/BsUserExample.java @@ -455,6 +455,136 @@ public class BsUserExample { return (Criteria) this; } + public Criteria andWechatNumIsNull() { + addCriterion("wechat_num is null"); + return (Criteria) this; + } + + public Criteria andWechatNumIsNotNull() { + addCriterion("wechat_num is not null"); + return (Criteria) this; + } + + public Criteria andWechatNumEqualTo(String value) { + addCriterion("wechat_num =", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumNotEqualTo(String value) { + addCriterion("wechat_num <>", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumGreaterThan(String value) { + addCriterion("wechat_num >", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumGreaterThanOrEqualTo(String value) { + addCriterion("wechat_num >=", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumLessThan(String value) { + addCriterion("wechat_num <", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumLessThanOrEqualTo(String value) { + addCriterion("wechat_num <=", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumLike(String value) { + addCriterion("wechat_num like", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumNotLike(String value) { + addCriterion("wechat_num not like", value, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumIn(List values) { + addCriterion("wechat_num in", values, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumNotIn(List values) { + addCriterion("wechat_num not in", values, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumBetween(String value1, String value2) { + addCriterion("wechat_num between", value1, value2, "wechatNum"); + return (Criteria) this; + } + + public Criteria andWechatNumNotBetween(String value1, String value2) { + addCriterion("wechat_num not between", value1, value2, "wechatNum"); + return (Criteria) this; + } + + public Criteria andInviteUserIdIsNull() { + addCriterion("invite_user_id is null"); + return (Criteria) this; + } + + public Criteria andInviteUserIdIsNotNull() { + addCriterion("invite_user_id is not null"); + return (Criteria) this; + } + + public Criteria andInviteUserIdEqualTo(Long value) { + addCriterion("invite_user_id =", value, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdNotEqualTo(Long value) { + addCriterion("invite_user_id <>", value, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdGreaterThan(Long value) { + addCriterion("invite_user_id >", value, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdGreaterThanOrEqualTo(Long value) { + addCriterion("invite_user_id >=", value, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdLessThan(Long value) { + addCriterion("invite_user_id <", value, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdLessThanOrEqualTo(Long value) { + addCriterion("invite_user_id <=", value, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdIn(List values) { + addCriterion("invite_user_id in", values, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdNotIn(List values) { + addCriterion("invite_user_id not in", values, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdBetween(Long value1, Long value2) { + addCriterion("invite_user_id between", value1, value2, "inviteUserId"); + return (Criteria) this; + } + + public Criteria andInviteUserIdNotBetween(Long value1, Long value2) { + addCriterion("invite_user_id not between", value1, value2, "inviteUserId"); + return (Criteria) this; + } + public Criteria andStatusIsNull() { addCriterion("`status` is null"); return (Criteria) this; diff --git a/service/src/main/java/com/hfkj/entity/BsUserInviteCode.java b/service/src/main/java/com/hfkj/entity/BsUserInviteCode.java new file mode 100644 index 0000000..addd8d8 --- /dev/null +++ b/service/src/main/java/com/hfkj/entity/BsUserInviteCode.java @@ -0,0 +1,168 @@ +package com.hfkj.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * bs_user_invite_code + * @author + */ +/** + * + * 代码由工具生成 + * + **/ +public class BsUserInviteCode implements Serializable { + /** + * 主键 + */ + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 二维码地址 + */ + private String qrCodeImg; + + /** + * 状态 0:不可用 1:正常 + */ + private Integer status; + + /** + * 创建时间 + */ + private Date createTime; + + private String ext1; + + private String ext2; + + private String ext3; + + private static final long serialVersionUID = 1L; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getQrCodeImg() { + return qrCodeImg; + } + + public void setQrCodeImg(String qrCodeImg) { + this.qrCodeImg = qrCodeImg; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getExt1() { + return ext1; + } + + public void setExt1(String ext1) { + this.ext1 = ext1; + } + + public String getExt2() { + return ext2; + } + + public void setExt2(String ext2) { + this.ext2 = ext2; + } + + public String getExt3() { + return ext3; + } + + public void setExt3(String ext3) { + this.ext3 = ext3; + } + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + BsUserInviteCode other = (BsUserInviteCode) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getQrCodeImg() == null ? other.getQrCodeImg() == null : this.getQrCodeImg().equals(other.getQrCodeImg())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) + && (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1())) + && (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2())) + && (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getQrCodeImg() == null) ? 0 : getQrCodeImg().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); + result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode()); + result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode()); + result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", userId=").append(userId); + sb.append(", qrCodeImg=").append(qrCodeImg); + sb.append(", status=").append(status); + sb.append(", createTime=").append(createTime); + sb.append(", ext1=").append(ext1); + sb.append(", ext2=").append(ext2); + sb.append(", ext3=").append(ext3); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/entity/BsUserInviteCodeExample.java b/service/src/main/java/com/hfkj/entity/BsUserInviteCodeExample.java new file mode 100644 index 0000000..1046ea2 --- /dev/null +++ b/service/src/main/java/com/hfkj/entity/BsUserInviteCodeExample.java @@ -0,0 +1,743 @@ +package com.hfkj.entity; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class BsUserInviteCodeExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + private Integer limit; + + private Long offset; + + public BsUserInviteCodeExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + public void setLimit(Integer limit) { + this.limit = limit; + } + + public Integer getLimit() { + return limit; + } + + public void setOffset(Long offset) { + this.offset = offset; + } + + public Long getOffset() { + return offset; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Long value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Long value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Long value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Long value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Long value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Long value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Long value1, Long value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Long value1, Long value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andQrCodeImgIsNull() { + addCriterion("qr_code_img is null"); + return (Criteria) this; + } + + public Criteria andQrCodeImgIsNotNull() { + addCriterion("qr_code_img is not null"); + return (Criteria) this; + } + + public Criteria andQrCodeImgEqualTo(String value) { + addCriterion("qr_code_img =", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgNotEqualTo(String value) { + addCriterion("qr_code_img <>", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgGreaterThan(String value) { + addCriterion("qr_code_img >", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgGreaterThanOrEqualTo(String value) { + addCriterion("qr_code_img >=", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgLessThan(String value) { + addCriterion("qr_code_img <", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgLessThanOrEqualTo(String value) { + addCriterion("qr_code_img <=", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgLike(String value) { + addCriterion("qr_code_img like", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgNotLike(String value) { + addCriterion("qr_code_img not like", value, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgIn(List values) { + addCriterion("qr_code_img in", values, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgNotIn(List values) { + addCriterion("qr_code_img not in", values, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgBetween(String value1, String value2) { + addCriterion("qr_code_img between", value1, value2, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andQrCodeImgNotBetween(String value1, String value2) { + addCriterion("qr_code_img not between", value1, value2, "qrCodeImg"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("`status` is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("`status` is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Integer value) { + addCriterion("`status` =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Integer value) { + addCriterion("`status` <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Integer value) { + addCriterion("`status` >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("`status` >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Integer value) { + addCriterion("`status` <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Integer value) { + addCriterion("`status` <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("`status` in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("`status` not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Integer value1, Integer value2) { + addCriterion("`status` between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Integer value1, Integer value2) { + addCriterion("`status` not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andExt1IsNull() { + addCriterion("ext_1 is null"); + return (Criteria) this; + } + + public Criteria andExt1IsNotNull() { + addCriterion("ext_1 is not null"); + return (Criteria) this; + } + + public Criteria andExt1EqualTo(String value) { + addCriterion("ext_1 =", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotEqualTo(String value) { + addCriterion("ext_1 <>", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1GreaterThan(String value) { + addCriterion("ext_1 >", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1GreaterThanOrEqualTo(String value) { + addCriterion("ext_1 >=", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1LessThan(String value) { + addCriterion("ext_1 <", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1LessThanOrEqualTo(String value) { + addCriterion("ext_1 <=", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1Like(String value) { + addCriterion("ext_1 like", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotLike(String value) { + addCriterion("ext_1 not like", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1In(List values) { + addCriterion("ext_1 in", values, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotIn(List values) { + addCriterion("ext_1 not in", values, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1Between(String value1, String value2) { + addCriterion("ext_1 between", value1, value2, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotBetween(String value1, String value2) { + addCriterion("ext_1 not between", value1, value2, "ext1"); + return (Criteria) this; + } + + public Criteria andExt2IsNull() { + addCriterion("ext_2 is null"); + return (Criteria) this; + } + + public Criteria andExt2IsNotNull() { + addCriterion("ext_2 is not null"); + return (Criteria) this; + } + + public Criteria andExt2EqualTo(String value) { + addCriterion("ext_2 =", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotEqualTo(String value) { + addCriterion("ext_2 <>", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2GreaterThan(String value) { + addCriterion("ext_2 >", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2GreaterThanOrEqualTo(String value) { + addCriterion("ext_2 >=", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2LessThan(String value) { + addCriterion("ext_2 <", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2LessThanOrEqualTo(String value) { + addCriterion("ext_2 <=", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2Like(String value) { + addCriterion("ext_2 like", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotLike(String value) { + addCriterion("ext_2 not like", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2In(List values) { + addCriterion("ext_2 in", values, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotIn(List values) { + addCriterion("ext_2 not in", values, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2Between(String value1, String value2) { + addCriterion("ext_2 between", value1, value2, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotBetween(String value1, String value2) { + addCriterion("ext_2 not between", value1, value2, "ext2"); + return (Criteria) this; + } + + public Criteria andExt3IsNull() { + addCriterion("ext_3 is null"); + return (Criteria) this; + } + + public Criteria andExt3IsNotNull() { + addCriterion("ext_3 is not null"); + return (Criteria) this; + } + + public Criteria andExt3EqualTo(String value) { + addCriterion("ext_3 =", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotEqualTo(String value) { + addCriterion("ext_3 <>", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3GreaterThan(String value) { + addCriterion("ext_3 >", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3GreaterThanOrEqualTo(String value) { + addCriterion("ext_3 >=", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3LessThan(String value) { + addCriterion("ext_3 <", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3LessThanOrEqualTo(String value) { + addCriterion("ext_3 <=", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3Like(String value) { + addCriterion("ext_3 like", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotLike(String value) { + addCriterion("ext_3 not like", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3In(List values) { + addCriterion("ext_3 in", values, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotIn(List values) { + addCriterion("ext_3 not in", values, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3Between(String value1, String value2) { + addCriterion("ext_3 between", value1, value2, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotBetween(String value1, String value2) { + addCriterion("ext_3 not between", value1, value2, "ext3"); + return (Criteria) this; + } + } + + /** + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/service/user/BsUserInviteCodeService.java b/service/src/main/java/com/hfkj/service/user/BsUserInviteCodeService.java new file mode 100644 index 0000000..b2dce9d --- /dev/null +++ b/service/src/main/java/com/hfkj/service/user/BsUserInviteCodeService.java @@ -0,0 +1,29 @@ +package com.hfkj.service.user; + +import com.google.zxing.WriterException; +import com.hfkj.entity.BsUserInviteCode; + +import java.io.IOException; + +/** + * 用户邀请码 + * @className: UserInviteCodeService + * @author: HuRui + * @date: 2024/9/9 + **/ +public interface BsUserInviteCodeService { + + /** + * 创建 + * @param userId + */ + BsUserInviteCode create(Long userId) throws Exception; + + /** + * 查询邀请码 + * @param userId + * @return + */ + BsUserInviteCode getDetail(Long userId); + +} diff --git a/service/src/main/java/com/hfkj/service/user/BsUserService.java b/service/src/main/java/com/hfkj/service/user/BsUserService.java index febaf96..965a949 100644 --- a/service/src/main/java/com/hfkj/service/user/BsUserService.java +++ b/service/src/main/java/com/hfkj/service/user/BsUserService.java @@ -26,6 +26,20 @@ public interface BsUserService { */ void updatePhone(Long userId, String newPhone) throws Exception; + /** + * 修改微信号 + * @param userId + * @param wechatNum + */ + void updateWechatNum(Long userId, String wechatNum) throws Exception; + + /** + * 绑定邀请人 + * @param userId + * @param inviteUseId + */ + void bindInviteUser(Long userId, Long inviteUseId) throws Exception; + /** * 查询详情 * @param userId @@ -44,18 +58,20 @@ public interface BsUserService { * 用户注册 * @param phone 手机号 * @param other 其他参数 + * @param inviteUseId 邀请人id * @return * @throws Exception */ - BsUser register(String phone, Map other); + BsUser register(String phone, Map other, Long inviteUseId); /** * 用户登录 * @param phone 用户手机号 * @param other 其他参数 + * @param inviteUseId 邀请人id * @return * @throws Exception */ - SessionObject login(String phone, UserLoginType loginType, Map other) throws Exception; + SessionObject login(String phone, UserLoginType loginType, Map other,Long inviteUseId) throws Exception; } diff --git a/service/src/main/java/com/hfkj/service/user/impl/BsUserInviteCodeServiceImpl.java b/service/src/main/java/com/hfkj/service/user/impl/BsUserInviteCodeServiceImpl.java new file mode 100644 index 0000000..9c15c0e --- /dev/null +++ b/service/src/main/java/com/hfkj/service/user/impl/BsUserInviteCodeServiceImpl.java @@ -0,0 +1,78 @@ +package com.hfkj.service.user.impl; + +import com.hfkj.common.QRCodeGenerator; +import com.hfkj.common.utils.RandomUtils; +import com.hfkj.common.utils.RedisUtil; +import com.hfkj.config.CommonSysConfig; +import com.hfkj.config.CommonSysConst; +import com.hfkj.dao.BsUserInviteCodeMapper; +import com.hfkj.entity.BsUserInviteCode; +import com.hfkj.entity.BsUserInviteCodeExample; +import com.hfkj.service.user.BsUserInviteCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @className: UserInviteCodeServiceImpl + * @author: HuRui + * @date: 2024/9/9 + **/ +@Service("userInviteCodeService") +public class BsUserInviteCodeServiceImpl implements BsUserInviteCodeService { + @Resource + private BsUserInviteCodeMapper userInviteCodeMapper; + @Resource + private RedisUtil redisUtil; + @Autowired + private CommonSysConfig commonSysConfig; + private final static String CACHE_KEY = "USER_INVITE_CODE"; + + @Override + public BsUserInviteCode create(Long userId) throws Exception { + BsUserInviteCode data = new BsUserInviteCode(); + data.setUserId(userId); + data.setCreateTime(new Date()); + data.setStatus(1); + System.out.println(commonSysConfig.getDomain()); + // 生成二维码 + String fileUrl = "/userInviteCode/"+data.getUserId()+".png"; + QRCodeGenerator.generateQRCodeImage( + ""+data.getUserId(), + 260, + 260, + commonSysConfig.getFilesystem() + fileUrl + ); + // 背景图 + // QRCodeGenerator.overlapImage(fileUrl, "/template/qrCodeBackdrop1_1.png",740,110); + data.setQrCodeImg(fileUrl); + userInviteCodeMapper.insert(data); + // 缓存 + redisUtil.hset(CACHE_KEY, data.getUserId()+"", data); + return data; + } + + + @Override + public BsUserInviteCode getDetail(Long userId) { + // 缓存 + Object cache = redisUtil.hget(CACHE_KEY, ""+userId); + if (cache != null) { + return (BsUserInviteCode) cache; + } + BsUserInviteCodeExample example = new BsUserInviteCodeExample(); + example.createCriteria().andUserIdEqualTo(userId).andStatusNotEqualTo(0); + List list = userInviteCodeMapper.selectByExample(example); + if (!list.isEmpty()) { + BsUserInviteCode data = list.get(0); + // 缓存 + redisUtil.hset(CACHE_KEY, ""+data.getUserId(), data); + return data; + } + return null; + } + +} diff --git a/service/src/main/java/com/hfkj/service/user/impl/BsUserServiceImpl.java b/service/src/main/java/com/hfkj/service/user/impl/BsUserServiceImpl.java index 2e1b19d..7f26b1a 100644 --- a/service/src/main/java/com/hfkj/service/user/impl/BsUserServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/user/impl/BsUserServiceImpl.java @@ -10,8 +10,10 @@ import com.hfkj.common.utils.RedisUtil; import com.hfkj.dao.BsUserMapper; import com.hfkj.entity.BsUser; import com.hfkj.entity.BsUserExample; +import com.hfkj.entity.BsUserInviteCode; import com.hfkj.model.UserSessionObject; import com.hfkj.service.user.BsUserAccountService; +import com.hfkj.service.user.BsUserInviteCodeService; import com.hfkj.service.user.BsUserLoginLogService; import com.hfkj.service.user.BsUserService; import com.hfkj.sysenum.user.UserGradeEnum; @@ -49,6 +51,8 @@ public class BsUserServiceImpl implements BsUserService { private BsUserLoginLogService userLoginLogService; @Resource private BsUserAccountService userAccountService; + @Resource + private BsUserInviteCodeService userInviteCodeService; private final static String CACHE_KEY = "USER"; /** @@ -77,6 +81,9 @@ public class BsUserServiceImpl implements BsUserService { @Override public void updatePhone(Long userId, String newPhone) throws Exception { + if (getUser(newPhone) != null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, ""); + } // 查询用户 BsUser user = getUser(userId); if (user == null) { @@ -93,12 +100,48 @@ public class BsUserServiceImpl implements BsUserService { } @Override - public BsUser getUser(Long userId) { + public void updateWechatNum(Long userId, String wechatNum) throws Exception { + // 查询用户 + BsUser user = getUser(userId); + if (user == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到用户"); + } + user.setWechatNum(wechatNum); + editData(user); - BsUser user = userMapper.selectByPrimaryKey(userId); - // 加入缓存 - redisUtil.hset(CACHE_KEY, user.getId().toString(), user); - return user; + // 更新session + UserSessionObject session = new UserSessionObject(); + session.setUser(user); + SessionObject sessionObject = new SessionObject(userToken(user.getId()), session); + userCenter.save(sessionObject); + } + + @Override + public void bindInviteUser(Long userId, Long inviteUseId) throws Exception { + // 查询用户 + BsUser user = getUser(userId); + if (user == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到用户"); + } + if (user.getInviteUserId() != null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "已绑定过邀请人"); + } + if (getUser(inviteUseId) == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的邀请人Id"); + } + user.setInviteUserId(inviteUseId); + editData(user); + + // 更新session + UserSessionObject session = new UserSessionObject(); + session.setUser(user); + SessionObject sessionObject = new SessionObject(userToken(user.getId()), session); + userCenter.save(sessionObject); + } + + @Override + public BsUser getUser(Long userId) { + return userMapper.selectByPrimaryKey(userId); } @Override @@ -122,12 +165,21 @@ public class BsUserServiceImpl implements BsUserService { @Override @Transactional(propagation= Propagation.REQUIRED,rollbackFor= {RuntimeException.class}) - public BsUser register(String phone, Map other) { + public BsUser register(String phone, Map other, Long inviteUseId) { // 查询手机号 if (getUser(phone) != null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "用户手机号已存在,请更换"); } BsUser user = new BsUser(); + if (inviteUseId != null) { + // 校验邀请码 + BsUserInviteCode userInviteCode = userInviteCodeService.getDetail(inviteUseId); + if (userInviteCode == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无效的邀请码"); + } + user.setInviteUserId(userInviteCode.getUserId()); + } + user.setHeadImg(MapUtils.getString(other,"headImg")); user.setName( StringUtils.isNotBlank(MapUtils.getString(other,"name")) @@ -139,18 +191,19 @@ public class BsUserServiceImpl implements BsUserService { user.setStatus(UserStatusEnum.status1.getCode()); editData(user); - // 创建 + // 创建账户 userAccountService.create(user.getId()); return user; } @Override - public SessionObject login(String phone, UserLoginType loginType, Map other) throws Exception { + @Transactional(propagation= Propagation.REQUIRED,rollbackFor= {RuntimeException.class}) + public SessionObject login(String phone, UserLoginType loginType, Map other, Long inviteUseId) throws Exception { // 查询用户 BsUser user = getUser(phone); if (user == null) { - user = register(phone, other); + user = register(phone, other, inviteUseId); } // 缓存 UserSessionObject session = new UserSessionObject(); diff --git a/service/src/main/resources/dev/commonConfig.properties b/service/src/main/resources/dev/commonConfig.properties index 24ee1b0..4aae95d 100644 --- a/service/src/main/resources/dev/commonConfig.properties +++ b/service/src/main/resources/dev/commonConfig.properties @@ -1,3 +1,5 @@ +filesystem=/home/project/youtao/filesystem +domain=47.92.163.212 taoBaoPostUrl = https://eco.taobao.com/router/rest taoBaoAppKey = 34807616