From 2366d2ada9e67f915a06b51b3c5be08a00847f0c Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期二, 22 一月 2019 10:47:06 +0800 Subject: [PATCH] 用户邀请码激活 --- fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/UserInfoExtraMapper.java | 7 fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java | 9 fanli/src/main/java/com/yeshi/fanli/mapping/user/UserInfoExtraMapper.xml | 29 ++ fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/ThreeSaleSerivce.java | 16 + fanli/src/main/java/com/yeshi/fanli/vo/user/UserInfoExtraVO.java | 14 fanli/src/main/java/com/yeshi/fanli/controller/client/InviteGetMoneyController.java | 219 +++++++++++++++++++ fanli/src/main/java/com/yeshi/fanli/aspect/H5SignValidateAspect.java | 3 fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java | 42 +++ fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java | 11 + fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoService.java | 9 fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java | 20 + fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfoExtra.java | 12 + fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java | 24 ++ fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml | 14 + fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml | 8 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java | 116 +++++++++ fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java | 13 + fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java | 39 +++ 18 files changed, 572 insertions(+), 33 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/aspect/H5SignValidateAspect.java b/fanli/src/main/java/com/yeshi/fanli/aspect/H5SignValidateAspect.java index c1cf1c2..cd7d8f4 100644 --- a/fanli/src/main/java/com/yeshi/fanli/aspect/H5SignValidateAspect.java +++ b/fanli/src/main/java/com/yeshi/fanli/aspect/H5SignValidateAspect.java @@ -13,6 +13,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; +import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; @@ -35,7 +36,7 @@ public static String KEY = "thisWarning"; - // @Around(EDP) + @Around(EDP) public Object appH5Around(ProceedingJoinPoint joinPoint) throws IOException { ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/InviteGetMoneyController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/InviteGetMoneyController.java index 8cb3109..ab3f298 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/InviteGetMoneyController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/InviteGetMoneyController.java @@ -3,6 +3,8 @@ import java.io.IOException; import java.io.PrintWriter; import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import javax.annotation.Resource; @@ -15,20 +17,26 @@ import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.admin.InviteGetMoney; import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture; +import com.yeshi.fanli.entity.bus.user.ThreeSale; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.system.System; import com.yeshi.fanli.entity.system.SystemClientParams; import com.yeshi.fanli.exception.NotExistObjectException; import com.yeshi.fanli.exception.banner.SwiperPictureException; +import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.InviteGetMoneyService; import com.yeshi.fanli.service.inter.config.SystemClientParamsService; -import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; -import com.yeshi.fanli.service.inter.user.QrCodeService; +import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.SpreadUserImgService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserRankingsService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.account.UserUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -52,13 +60,7 @@ private SystemClientParamsService systemClientParamsService; @Resource - private QrCodeService qrCodeService; - - @Resource private SpreadUserImgService spreadUserImgService; - - @Resource - private TaoBaoGoodsBriefService taoBaoGoodsBriefService; @Resource private UserRankingsService userRankingsService; @@ -68,6 +70,16 @@ @Resource private SwiperPictureService swiperPictureService; + + @Resource + private UserInfoExtraService userInfoExtraService; + + @Resource + private UserInfoService userInfoService; + + @Resource + private ThreeSaleSerivce threeSaleSerivce; + @RequestMapping(value = "/inviteGetMoney", method = RequestMethod.POST) public void everyDayTaskList(AcceptData acceptData, int pageIndex, PrintWriter out, String uid) @@ -197,4 +209,195 @@ data.put("inviteRules", valueBr); out.print(JsonUtil.loadTrue(0, JsonUtil.getSimpleGson().toJson(data), "鎴愬姛")); } + + + /** + * 閭�璇锋縺娲�-鐗瑰埆鎻愮ず璇� + * @param callback + * @param out + */ + @RequestMapping(value = "getActivationTip") + public void getActivationTip(AcceptData acceptData, String callback, PrintWriter out) { + try { + String tip = configService.get("invite_activation_tip"); + if (tip == null || tip.trim().length() == 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛棤鎻愰啋")); + return; + } + + JSONObject data = new JSONObject(); + data.put("tip", tip); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鑾峰彇澶辫触")); + e.printStackTrace(); + } + } + + /** + * 婵�娲婚個璇� + * @param callback + * @param uid 鐢ㄦ埛id + * @param inviteCode 閭�璇峰槢 + * @param out + */ + @RequestMapping(value = "activationInvite") + public void activationInvite(AcceptData acceptData, String callback, Long uid, String inviteCode, PrintWriter out) { + try { + + if (uid == null || inviteCode == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘")); + return; + } + + String newCode = userInfoExtraService.activateInviteCode(uid, inviteCode); + if (newCode == null || newCode.trim().length() == 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("婵�娲诲け璐�")); + return; + } + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("婵�娲绘垚鍔�")); + + } catch (UserInfoExtraException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("婵�娲诲け璐�")); + e.printStackTrace(); + } + } + + + /** + * 鑾峰彇閭�璇风爜 + * @param callback + * @param uid 鐢ㄦ埛id + * @param out + */ + @RequestMapping(value = "getInviteCode") + public void getInviteCode(AcceptData acceptData, String callback, Long uid, PrintWriter out) { + try { + + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘")); + return; + } + + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + if (userInfoExtra == null || userInfoExtra.getInviteCode() == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("閭�璇风爜涓嶅瓨鍦�")); + return; + } + String tip = configService.get("invite_activation_success_tip"); + + JSONObject data = new JSONObject(); + data.put("inviteCode", userInfoExtra.getInviteCode()); + data.put("tip", tip); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鑾峰彇鏁版嵁澶辫触")); + e.printStackTrace(); + } + } + + /** + * 鑾峰彇閭�璇风煭杩炴帴 + * @param callback + * @param uid 鐢ㄦ埛id + * @param out + */ + @RequestMapping(value = "getShortLink") + public void getShortLink(AcceptData acceptData, String callback, Long uid, PrintWriter out) { + try { + + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘")); + return; + } + + String shortLink = UserUtil.getInviteShortLink(uid); + + JSONObject data = new JSONObject(); + data.put("shortLink", shortLink); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢熸垚鐭繛鎺ュけ璐�")); + e.printStackTrace(); + } + } + + /** + * 鑾峰彇閭�璇风數璇濆彿鐮� + * @param callback + * @param uid 鐢ㄦ埛id + * @param out + */ + @RequestMapping(value = "getUserPhone") + public void getUserPhone(AcceptData acceptData, String callback, Long uid, PrintWriter out) { + try { + + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘")); + return; + } + + UserInfo userInfo = userInfoService.selectByPKey(uid); + if (userInfo == null || userInfo.getPhone() == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛湭缁戝畾鐢佃瘽鍙风爜")); + return; + } + JSONObject data = new JSONObject(); + data.put("phone", userInfo.getPhone()); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鑾峰彇鏁版嵁澶辫触")); + e.printStackTrace(); + } + } + + /** + * 鑾峰彇鐢ㄦ埛閭�璇蜂笂绾� + * @param callback + * @param uid + * @param out + */ + @RequestMapping(value = "getUserBoss") + public void getUserBoss(AcceptData acceptData, String callback, Long uid, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘")); + return; + } + + try { + ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); + if (threeSale == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏃犱笂绾ч個璇蜂汉")); + return; + } + + + UserInfo boss = threeSale.getBoss(); + if (boss == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("涓婄骇閭�璇蜂汉鑾峰彇澶辫触")); + return; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); + Long createTime = threeSale.getCreateTime(); + Date inviteTime = new Date(createTime); + + JSONObject data = new JSONObject(); + data.put("nickName", boss.getNickName()); + data.put("portrait", boss.getPortrait()); + data.put("inviteTime", sdf.format(inviteTime)); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鑾峰彇鏁版嵁澶辫触")); + e.printStackTrace(); + } + } } diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java index d65b2e5..5b2d0c0 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java @@ -2059,4 +2059,46 @@ } } + + /** + * 鑾峰彇绛夌骇淇℃伅 + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getUserConfig", method = RequestMethod.POST) + public void getUserConfig(AcceptData acceptData, Long uid, PrintWriter out) { + + if (uid == null) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + try { + + String inviteCode = userInfoExtraService.getUserInviteCode(uid); + + JSONObject inviteData = new JSONObject(); + if (inviteCode == null || inviteCode.trim().length() == 0) { + // 鏃犻個璇风爜 + inviteData.put("content", "閭�璇锋縺娲�"); + inviteData.put("link", configService.get("invite_activation_url")); + } else { + // 宸叉湁閭�璇风爜 + inviteData.put("content", "閭�璇风爜"); + inviteData.put("link", configService.get("invite_activation_success_url")); + } + + JSONObject data = new JSONObject(); + data.put("invite", inviteData); + + out.print(JsonUtil.loadTrueResult(data)); + + } catch (UserInfoExtraException e) { + out.print(JsonUtil.loadFalseResult(e.getMsg())); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult("鑾峰彇澶辫触")); + e.printStackTrace(); + } + } } diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java index 1af529b..79fa954 100644 --- a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java +++ b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java @@ -185,4 +185,24 @@ * @return */ List<ThreeSale> listByWorkerId(Long workerId); + + + /** + * 鑾峰彇鎴愬姛閭�璇峰叧绯绘暟閲� + * + * @param uid + * @return + */ + int getSuccessRelationshipNum(@Param("uid") Long uid); + + + /** + * 鏍规嵁閭�璇疯�匢D銆乥ossID鏌ヨ 鏈夋晥鍏崇郴 + * + * @param workerId + * @return + */ + ThreeSale getRelationshipByBossIdAndWorkerId(@Param("bossId") Long bossId, @Param("workerId") Long workerId); + + } \ No newline at end of file diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java index 35faa38..3bd6a64 100644 --- a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java +++ b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java @@ -158,4 +158,13 @@ Map<String, Object> getWeekHasOrder(@Param("channel")String channel, @Param("startTime")String startTime, @Param("endTime")String endTime, @Param("orderNum")Integer orderNum); + + /** + * 鏍规嵁鐢佃瘽鍙风爜銆侀個璇风爜鑾峰彇閭�璇风敤鎴� + * @param phone + * @param inviteCode + * @return + */ + UserInfo getInfoByPhoneOrInviteCode(@Param("phone")String phone, @Param("inviteCode")String inviteCode); + } \ No newline at end of file diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/UserInfoExtraMapper.java b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/UserInfoExtraMapper.java index abe60a0..6642970 100644 --- a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/UserInfoExtraMapper.java +++ b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/UserInfoExtraMapper.java @@ -21,4 +21,11 @@ */ UserInfoExtraVO getInfoExtraVOByUid(Long uid); + + /** + * 鏇存柊鐢ㄦ埛淇℃伅鏍规嵁Uid + * @param userInfoExtra + */ + void updateInfoExtraByUid(UserInfoExtra userInfoExtra); + } \ No newline at end of file diff --git a/fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfoExtra.java b/fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfoExtra.java index 2e3eb36..5f9d59f 100644 --- a/fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfoExtra.java +++ b/fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfoExtra.java @@ -40,6 +40,10 @@ @Expose @Column(name = "uie_rank_update_time") private Date rankUpdateTime; + + // 閭�璇风爜 + @Column(name = "uie_invite_code") + private String inviteCode; // 鍒涘缓鏃堕棿 @Column(name = "uie_create_time") @@ -112,5 +116,13 @@ public void setRankOrderNum(Integer rankOrderNum) { this.rankOrderNum = rankOrderNum; } + + public String getInviteCode() { + return inviteCode; + } + + public void setInviteCode(String inviteCode) { + this.inviteCode = inviteCode; + } } diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml index 337149d..7484a5c 100644 --- a/fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml +++ b/fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml @@ -415,5 +415,17 @@ AND `expire` = 1 <!-- 澶辨晥 --> </if> </select> - + + <select id="getSuccessRelationshipNum" resultType="java.lang.Integer"> + SELECT IFNULL (COUNT(*),0) FROM `yeshi_ec_threesale` t + WHERE t.`state` = 1 AND (t.`worker_id` =${uid} OR t.`boss_id` = ${uid}) + </select> + + <select id="getRelationshipByBossIdAndWorkerId" resultMap="BaseResultMap"> + SELECT * FROM `yeshi_ec_threesale` t + WHERE t.`boss_id` = ${bossId} AND t.`worker_id` = ${workerId} + AND t.`state` = 0 AND (t.`expire` = 0 OR t.`expire`IS NULL) + LIMIT 1 + </select> + </mapper> diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml index 999da2e..0a056ed 100644 --- a/fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml +++ b/fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml @@ -489,4 +489,12 @@ GROUP BY FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') ORDER BY u.`createtime` </select> + + <select id="getInfoByPhoneOrInviteCode" resultMap="BaseResultMap"> + SELECT * FROM yeshi_ec_user u + LEFT JOIN yeshi_ec_user_info_extra uf ON uf.`uie_uid` = u.`id` + WHERE uf.`uie_invite_code` IS NOT NULL + AND (u.`phone` =#{phone} OR uf.`uie_invite_code` = #{inviteCode}) + LIMIT 1 + </select> </mapper> diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/user/UserInfoExtraMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/user/UserInfoExtraMapper.xml index a23a1b5..e1ce457 100644 --- a/fanli/src/main/java/com/yeshi/fanli/mapping/user/UserInfoExtraMapper.xml +++ b/fanli/src/main/java/com/yeshi/fanli/mapping/user/UserInfoExtraMapper.xml @@ -7,6 +7,7 @@ <result column="uie_rank_source" property="rankSource" jdbcType="INTEGER"/> <result column="uie_rank_order_num" property="rankOrderNum" jdbcType="INTEGER"/> <result column="uie_rank_update_time" property="rankUpdateTime" jdbcType="TIMESTAMP"/> + <result column="uie_invite_code" property="inviteCode" jdbcType="VARCHAR"/> <result column="uie_create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="uie_update_time" property="updateTime" jdbcType="TIMESTAMP"/> @@ -24,6 +25,7 @@ <result column="uie_rank_source" property="rankSource" jdbcType="INTEGER"/> <result column="uie_rank_order_num" property="rankOrderNum" jdbcType="INTEGER"/> <result column="uie_rank_update_time" property="rankUpdateTime" jdbcType="TIMESTAMP"/> + <result column="uie_invite_code" property="inviteCode" jdbcType="VARCHAR"/> <result column="uie_create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="uie_update_time" property="updateTime" jdbcType="TIMESTAMP"/> @@ -35,7 +37,7 @@ </resultMap> - <sql id="Base_Column_List">uie_id,uie_uid,uie_rank_id,uie_rank_source,uie_rank_order_num,uie_rank_update_time,uie_create_time,uie_update_time</sql> + <sql id="Base_Column_List">uie_id,uie_uid,uie_rank_id,uie_rank_source,uie_rank_order_num,uie_rank_update_time,uie_invite_code,uie_create_time,uie_update_time</sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select <include refid="Base_Column_List"/>from yeshi_ec_user_info_extra where uie_id = #{id,jdbcType=BIGINT} @@ -43,7 +45,7 @@ <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_user_info_extra where uie_id = #{id,jdbcType=BIGINT}</delete> - <insert id="insert" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_user_info_extra (uie_id,uie_uid,uie_rank_id,uie_rank_source,uie_rank_order_num,uie_rank_update_time,uie_create_time,uie_update_time) values (#{id,jdbcType=BIGINT},#{userInfo.id,jdbcType=BIGINT},#{userRank.id,jdbcType=BIGINT},#{rankSource,jdbcType=INTEGER},#{rankOrderNum,jdbcType=INTEGER},#{rankUpdateTime,jdbcType=TIMESTAMP},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})</insert> + <insert id="insert" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_user_info_extra (uie_id,uie_uid,uie_rank_id,uie_rank_source,uie_rank_order_num,uie_rank_update_time,uie_invite_code,uie_create_time,uie_update_time) values (#{id,jdbcType=BIGINT},#{userInfo.id,jdbcType=BIGINT},#{userRank.id,jdbcType=BIGINT},#{rankSource,jdbcType=INTEGER},#{rankOrderNum,jdbcType=INTEGER},#{rankUpdateTime,jdbcType=TIMESTAMP},#{inviteCode,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})</insert> <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_user_info_extra <trim prefix="(" suffix=")" suffixOverrides=","> @@ -53,6 +55,7 @@ <if test="rankSource != null">uie_rank_source,</if> <if test="rankOrderNum != null">uie_rank_order_num,</if> <if test="rankUpdateTime != null">uie_rank_update_time,</if> + <if test="inviteCode != null">uie_invite_code,</if> <if test="createTime != null">uie_create_time,</if> <if test="updateTime != null">uie_update_time,</if> </trim>values @@ -63,11 +66,12 @@ <if test="rankSource != null">#{rankSource,jdbcType=INTEGER},</if> <if test="rankOrderNum != null">#{rankOrderNum,jdbcType=INTEGER},</if> <if test="rankUpdateTime != null">#{rankUpdateTime,jdbcType=TIMESTAMP},</if> + <if test="inviteCode != null">#{inviteCode,jdbcType=VARCHAR},</if> <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if> <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if> </trim> </insert> - <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra">update yeshi_ec_user_info_extra set uie_uid = #{userInfo.id,jdbcType=BIGINT},uie_rank_id = #{userRank.id,jdbcType=BIGINT},uie_rank_source = #{rankSource,jdbcType=INTEGER},uie_rank_order_num = #{rankOrderNum,jdbcType=INTEGER},uie_rank_update_time = #{rankUpdateTime,jdbcType=TIMESTAMP},uie_create_time = #{createTime,jdbcType=TIMESTAMP},uie_update_time = #{updateTime,jdbcType=TIMESTAMP} where uie_id = #{id,jdbcType=BIGINT}</update> + <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra">update yeshi_ec_user_info_extra set uie_uid = #{userInfo.id,jdbcType=BIGINT},uie_rank_id = #{userRank.id,jdbcType=BIGINT},uie_rank_source = #{rankSource,jdbcType=INTEGER},uie_rank_order_num = #{rankOrderNum,jdbcType=INTEGER},uie_rank_update_time = #{rankUpdateTime,jdbcType=TIMESTAMP},uie_invite_code = #{inviteCode,jdbcType=VARCHAR},uie_create_time = #{createTime,jdbcType=TIMESTAMP},uie_update_time = #{updateTime,jdbcType=TIMESTAMP} where uie_id = #{id,jdbcType=BIGINT}</update> <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra">update yeshi_ec_user_info_extra <set> <if test="userInfo != null">uie_uid=#{userInfo.id,jdbcType=BIGINT},</if> @@ -75,14 +79,27 @@ <if test="rankSource != null">uie_rank_source=#{rankSource,jdbcType=INTEGER},</if> <if test="rankOrderNum != null">uie_rank_order_num=#{rankOrderNum,jdbcType=INTEGER},</if> <if test="rankUpdateTime != null">uie_rank_update_time=#{rankUpdateTime,jdbcType=TIMESTAMP},</if> + <if test="inviteCode != null">uie_invite_code=#{inviteCode,jdbcType=VARCHAR},</if> <if test="createTime != null">uie_create_time=#{createTime,jdbcType=TIMESTAMP},</if> <if test="updateTime != null">uie_update_time=#{updateTime,jdbcType=TIMESTAMP},</if> </set> where uie_id = #{id,jdbcType=BIGINT} </update> + <update id="updateInfoExtraByUid" parameterType="com.yeshi.fanli.entity.bus.user.UserInfoExtra"> + update yeshi_ec_user_info_extra + <set> + <if test="userRank != null">uie_rank_id=#{userRank.id,jdbcType=BIGINT},</if> + <if test="rankSource != null">uie_rank_source=#{rankSource,jdbcType=INTEGER},</if> + <if test="rankOrderNum != null">uie_rank_order_num=#{rankOrderNum,jdbcType=INTEGER},</if> + <if test="rankUpdateTime != null">uie_rank_update_time=#{rankUpdateTime,jdbcType=TIMESTAMP},</if> + <if test="inviteCode != null">uie_invite_code=#{inviteCode,jdbcType=VARCHAR},</if> + <if test="createTime != null">uie_create_time=#{createTime,jdbcType=TIMESTAMP},</if> + <if test="updateTime != null">uie_update_time=#{updateTime,jdbcType=TIMESTAMP},</if> + </set> where uie_uid = #{userInfo.id,jdbcType=BIGINT} + </update> + <select id="getInfoExtraByUid" resultMap="BaseResultMap"> - SELECT * - FROM yeshi_ec_user_info_extra + SELECT * FROM yeshi_ec_user_info_extra WHERE uie_uid = #{uid} </select> @@ -93,4 +110,6 @@ LEFT JOIN yeshi_ec_user_rank rk ON rk.`ur_id` = ue.`uie_rank_id` WHERE u.id = #{uid} </select> + + </mapper> diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java index ad2dd52..bd3ac09 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java @@ -588,5 +588,44 @@ public List<ThreeSale> listByWorkerId(Long workerId) { return threeSaleMapper.listByWorkerId(workerId); } + + + @Override + public int getSuccessRelationshipNum(Long uid) { + return threeSaleMapper.getSuccessRelationshipNum(uid); + } + @Override + @Transactional + public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException { + + if (invitee == null || inviter == null) + throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); + + // 鑾峰彇鏈夋晥鐨勯個璇峰叧绯� + ThreeSale threeSale = + threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId()); + + if (threeSale != null) { + // 鏈夋晥鍏崇郴--鐢熸晥 + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.updateByPrimaryKeySelective(threeSale); + } else { + // 鏂板缓绔嬬‘瀹氬叧绯� + threeSale = new ThreeSale(); + threeSale.setBoss(inviter); + threeSale.setWorker(invitee); + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.insertSelective(threeSale); + } + + } + } diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java index 6380155..faf6869 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java @@ -17,12 +17,17 @@ import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.bus.user.UserRank; import com.yeshi.fanli.entity.bus.user.UserRankRecord; +import com.yeshi.fanli.exception.ThreeSaleException; import com.yeshi.fanli.exception.user.UserInfoExtraException; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.order.CommonOrderCountService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserRankService; import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.account.UserUtil; import com.yeshi.fanli.vo.user.UserInfoExtraVO; @@ -43,6 +48,13 @@ @Resource private ConfigService configService; + + @Resource + private ThreeSaleSerivce threeSaleSerivce; + + @Resource + private UserInfoService userInfoService; + @Override public UserInfoExtraVO getRankInfo(Long uid) throws UserInfoExtraException, Exception { @@ -52,13 +64,9 @@ throw new UserInfoExtraException(1, "鐢ㄦ埛闄勫姞淇℃伅涓嶅瓨鍦�"); } - // 绛夌骇鍒楄〃 - List<UserRank> listRank = userRankService.getAllRank(); - if (listRank == null || listRank.size() == 0) { - throw new UserInfoExtraException(1, "绯荤粺绛夌骇涓嶅瓨鍦�"); - } - extraVO.setListRank(listRank); - + // 绛夌骇瀵圭収琛� + String contrast = configService.get("user_rank_contrast"); + extraVO.setRankContrast(contrast); // 鐗瑰埆鎻愰啋 String rankTip = configService.get("user_rank_tip"); extraVO.setRankTip(rankTip); @@ -264,8 +272,98 @@ } } - return userInfoExtra; } - + + @Override + public String activateInviteCode(Long uid, String inviteCode) throws UserInfoExtraException{ + if (uid == null || inviteCode == null) { + throw new UserInfoExtraException(1, "鐢ㄦ埛id銆侀個璇风爜涓嶈兘涓虹┖"); + } + + // 琚個璇蜂汉淇℃伅 + UserInfo invitee = userInfoService.selectByPKey(uid); + if (invitee == null) { + throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�"); + } + + // 閭�璇蜂汉淇℃伅 + UserInfo inviter = userInfoService.getInfoByPhoneOrInviteCode(inviteCode, inviteCode); + if (inviter == null) { + throw new UserInfoExtraException(1, "璇疯緭鍏ユ湁鏁堢殑閭�璇风爜"); + } + + // 缁戝畾鍏崇郴 + try { + threeSaleSerivce.bindRelationshipByInviteCode(invitee, inviter); + } catch (ThreeSaleException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + throw new UserInfoExtraException(1, "婵�娲诲け璐�"); + } + + + // 閭�璇风爜鏈夋晥銆佺敓鎴愰個璇风爜 + String code = UserUtil.getInviteCode(uid); + if (code == null || code.trim().length() == 0) { + throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触"); + } + + UserInfoExtra userInfoExtra = new UserInfoExtra(); + userInfoExtra.setUserInfo(invitee); + userInfoExtra.setInviteCode(code); + + // 淇濆瓨棰濆淇℃伅 + saveUserInfoExtra(userInfoExtra); + + + Long id = userInfoExtra.getId(); + if (id == null) { + throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触"); + } + + return code; + } + + @Override + public UserInfoExtra getUserInfoExtra(Long uid) { + return userInfoExtraMapper.getInfoExtraByUid(uid); + } + + @Override + public String getUserInviteCode(Long uid) throws UserInfoExtraException { + + UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid); + if (userInfoExtra == null) { + userInfoExtra = new UserInfoExtra(); + } + + // 閭�璇风爜 + String inviteCode = userInfoExtra.getInviteCode(); + + if (inviteCode == null || inviteCode.trim().length() == 0) { + // 鍒ゆ柇鐢ㄦ埛 + int relationshipNum = threeSaleSerivce.getSuccessRelationshipNum(uid); + + if (relationshipNum > 0) { + // 閭�璇风爜鏈夋晥銆佺敓鎴愰個璇风爜 + inviteCode = UserUtil.getInviteCode(uid); + if (inviteCode == null || inviteCode.trim().length() == 0) { + throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触"); + } + + // 淇濆瓨閭�璇风爜 + userInfoExtra.setUserInfo(new UserInfo(uid)); + userInfoExtra.setInviteCode(inviteCode); + // 淇濆瓨闄勫姞淇℃伅 + saveUserInfoExtra(userInfoExtra); + } + } + + return inviteCode; + } + } diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java index 33df29b..640d21b 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java @@ -812,4 +812,15 @@ return userInfoMapper.longTimeNoLogin(daysNum, list); } + /** + * 鏍规嵁鐢佃瘽鍙风爜銆侀個璇风爜鑾峰彇閭�璇风敤鎴� + * @param phone + * @param inviteCode + * @return + */ + @Override + public UserInfo getInfoByPhoneOrInviteCode(String phone, String inviteCode) { + return userInfoMapper.getInfoByPhoneOrInviteCode(phone, inviteCode); + } + } diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/ThreeSaleSerivce.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/ThreeSaleSerivce.java index 712f8cb..dcf9194 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/ThreeSaleSerivce.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/ThreeSaleSerivce.java @@ -242,5 +242,21 @@ * @return */ public List<ThreeSale> listByWorkerId(Long workerId); + + + /** + * 鑾峰彇鎴愬姛閭�璇峰叧绯绘暟閲� + * @param uid + * @return + */ + public int getSuccessRelationshipNum(Long uid); + + /** + * 閭�璇风爜鐢熸垚涓婁笅绾у叧绯� + * @param invitee + * @param inviter + * @throws ThreeSaleException + */ + public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException; } diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java index fb6ef96..7b4e2ff 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java @@ -36,5 +36,29 @@ * @throws UserInfoExtraException */ public UserInfoExtra updateRank(UserInfoExtra userInfoExtra) throws UserInfoExtraException; + + /** + * 鐢ㄦ埛婵�娲婚個璇风爜 + * @param uid + * @param inviteCode + * @return + * @throws UserInfoExtraException + */ + public String activateInviteCode(Long uid, String inviteCode) throws UserInfoExtraException; + + /** + * 鑾峰彇鐢ㄦ埛闄勫姞淇℃伅 + * @param uid + * @return + */ + public UserInfoExtra getUserInfoExtra(Long uid); + + /** + * 鑾峰彇鐢ㄦ埛閭�璇风爜 + * @param uid + * @return + * @throws UserInfoExtraException + */ + public String getUserInviteCode(Long uid) throws UserInfoExtraException; } diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoService.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoService.java index 9893872..a6419fa 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoService.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoService.java @@ -1,7 +1,6 @@ package com.yeshi.fanli.service.inter.user; import java.math.BigDecimal; -import java.net.ConnectException; import java.util.Date; import java.util.List; import java.util.Map; @@ -148,4 +147,12 @@ */ public List<Long> longTimeNoLogin(int daysNum, List<Long> list); + /** + * 鏍规嵁鐢佃瘽鍙风爜銆侀個璇风爜鑾峰彇閭�璇风敤鎴� + * @param phone + * @param inviteCode + * @return + */ + public UserInfo getInfoByPhoneOrInviteCode(String phone, String inviteCode); + } diff --git a/fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java index 132d655..b14b280 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java @@ -6,6 +6,7 @@ import java.util.List; import org.apache.commons.beanutils.PropertyUtils; +import org.yeshi.utils.HttpUtil; import com.yeshi.fanli.entity.bus.user.BindingAccount; import com.yeshi.fanli.entity.bus.user.UserInfo; @@ -67,7 +68,17 @@ return String.format(Constant.systemCommonConfig.getBaseUserRankIconUrl() + "/rank_picture_%s.png", rank + ""); } - + + + public static String getInviteShortLink (Long uid) { + return HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/" + + Constant.systemCommonConfig.getProjectName() + "/" + + java.lang.System.currentTimeMillis()+ + "/client/threeShareNew?uid=" + uid); + } + + + public static String getInviteCode(Long uid) { long num = 1000000000L + uid; diff --git a/fanli/src/main/java/com/yeshi/fanli/vo/user/UserInfoExtraVO.java b/fanli/src/main/java/com/yeshi/fanli/vo/user/UserInfoExtraVO.java index a8183a3..4169d5f 100644 --- a/fanli/src/main/java/com/yeshi/fanli/vo/user/UserInfoExtraVO.java +++ b/fanli/src/main/java/com/yeshi/fanli/vo/user/UserInfoExtraVO.java @@ -5,16 +5,15 @@ import com.google.gson.annotations.Expose; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; -import com.yeshi.fanli.entity.bus.user.UserRank; public class UserInfoExtraVO extends UserInfoExtra implements Serializable { private static final long serialVersionUID = 1L; - // 绯荤粺绛夌骇鍒楄〃 + // 绯荤粺绛夌骇鍒楄〃鍥剧墖 @Expose - private List<UserRank> listRank; + private String rankContrast; // 绯荤粺鐗瑰埆鎻愰啋 @Expose private String rankTip; @@ -37,12 +36,13 @@ this.galaMsg = galaMsg; } - public List<UserRank> getListRank() { - return listRank; + + public String getRankContrast() { + return rankContrast; } - public void setListRank(List<UserRank> listRank) { - this.listRank = listRank; + public void setRankContrast(String rankContrast) { + this.rankContrast = rankContrast; } public int getOrderNumSelf() { -- Gitblit v1.8.0