fanli/src/main/java/com/yeshi/fanli/controller/client/v2/IntegralControllerV2.java
@@ -55,7 +55,6 @@ import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.annotation.RequestSerializableByKey; import com.yeshi.fanli.vo.integral.DailySignVO; import com.yeshi.fanli.vo.integral.ExchangeTipVO; import com.yeshi.fanli.vo.integral.IntegralDetailVO; fanli/src/main/java/com/yeshi/fanli/dao/mybatis/integral/IntegralTaskRecordMapper.java
@@ -1,89 +1,99 @@ package com.yeshi.fanli.dao.mybatis.integral; import java.util.Date; import java.util.List; import java.util.Set; import org.apache.ibatis.annotations.Param; import com.yeshi.fanli.dao.BaseMapper; import com.yeshi.fanli.entity.integral.IntegralTaskRecord; public interface IntegralTaskRecordMapper extends BaseMapper<IntegralTaskRecord> { /** * 未领取金币 * * @param count * @param uid * @return */ List<IntegralTaskRecord> listNotReceived(@Param("count") int count, @Param("uid") Long uid); /** * 未领取金币- 排除id * * @param count * @param uid * @return */ List<IntegralTaskRecord> listNotReceivedExcludeId(@Param("count") int count, @Param("uid") Long uid, @Param("list") Set<Long> idList); /** * 总完成 * * @param uid * @param dateType * @return */ Integer getTotalGoldCoin(@Param("uid") Long uid, @Param("cid") Long cid, @Param("dateType") Integer dateType); /** * 统计完成数量 * * @param uid * @param cid * @param dateType * @return */ Integer countFinished(@Param("uid") Long uid, @Param("cid") Long cid, @Param("dateType") Integer dateType); /** * 近7天签到情况 * * @param uid * @param cid * @param sortState * 1倒序-创建时间 * @return */ List<IntegralTaskRecord> listDaySignRecord(@Param("uid") Long uid, @Param("cid") Long cid); /** * 未领取金币 * * @param count * @param uid * @return */ int countTotalGoldCoin(@Param("uid") Long uid); /** * 更新领取状态 * * @param uid */ void updateReceived(@Param("uid") Long uid); /** * 根据任务ID与时间段查询任务完成数量 * * @param taskId * @param uid * @param minTime * @param maxTime */ int countGetCountByTaskIdAndDay(@Param("taskId") Long taskId,@Param("uid")Long uid, @Param("minTime") Date minTime, @Param("maxTime") Date maxTime); } package com.yeshi.fanli.dao.mybatis.integral; import java.util.Date; import java.util.List; import java.util.Set; import org.apache.ibatis.annotations.Param; import com.yeshi.fanli.dao.BaseMapper; import com.yeshi.fanli.entity.integral.IntegralTaskRecord; public interface IntegralTaskRecordMapper extends BaseMapper<IntegralTaskRecord> { /** * 未领取金币 * * @param count * @param uid * @return */ List<IntegralTaskRecord> listNotReceived(@Param("count") int count, @Param("uid") Long uid); /** * 未领取金币- 排除id * * @param count * @param uid * @return */ List<IntegralTaskRecord> listNotReceivedExcludeId(@Param("count") int count, @Param("uid") Long uid, @Param("list") Set<Long> idList); /** * 总完成 * * @param uid * @param dateType * @return */ Integer getTotalGoldCoin(@Param("uid") Long uid, @Param("cid") Long cid, @Param("dateType") Integer dateType); /** * 统计完成数量 * * @param uid * @param cid * @param dateType * @return */ Integer countFinished(@Param("uid") Long uid, @Param("cid") Long cid, @Param("dateType") Integer dateType); /** * 近7天签到情况 * * @param uid * @param cid * @param sortState * 1倒序-创建时间 * @return */ List<IntegralTaskRecord> listDaySignRecord(@Param("uid") Long uid, @Param("cid") Long cid); /** * 未领取金币 * * @param count * @param uid * @return */ int countTotalGoldCoin(@Param("uid") Long uid); /** * 更新领取状态 * * @param uid */ void updateReceived(@Param("uid") Long uid); /** * 根据任务ID与时间段查询任务完成数量 * * @param taskId * @param uid * @param minTime * @param maxTime */ int countGetCountByTaskIdAndDay(@Param("taskId") Long taskId,@Param("uid")Long uid, @Param("minTime") Date minTime, @Param("maxTime") Date maxTime); /** * 统计今日第几次完成的任务 * * @param count * @param uid * @return */ int countByTaskIdTodayNum(@Param("uid") Long uid, @Param("tid") Long tid, @Param("date") Date date); } fanli/src/main/java/com/yeshi/fanli/mapping/integral/IntegralTaskRecordMapper.xml
@@ -1,179 +1,186 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yeshi.fanli.dao.mybatis.integral.IntegralTaskRecordMapper"> <resultMap id="BaseResultMap" type="com.yeshi.fanli.entity.integral.IntegralTaskRecord"> <id column="ir_id" property="id" jdbcType="BIGINT" /> <result column="ir_cid" property="cid" jdbcType="BIGINT" /> <result column="ir_task_id" property="taskId" jdbcType="BIGINT" /> <result column="ir_uid" property="uid" jdbcType="BIGINT" /> <result column="ir_gold_coin" property="goldCoin" jdbcType="INTEGER" /> <result column="ir_state" property="state" jdbcType="INTEGER" /> <result column="ir_create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="ir_update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="taskName" property="taskName" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List">ir_id,ir_cid,ir_task_id,ir_uid,ir_gold_coin,ir_state,ir_create_time,ir_update_time </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long"> select <include refid="Base_Column_List" /> from yeshi_ec_integral_task_record where ir_id = #{id,jdbcType=BIGINT} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_integral_task_record where ir_id = #{id,jdbcType=BIGINT} </delete> <insert id="insert" parameterType="com.yeshi.fanli.entity.integral.IntegralTaskRecord" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_integral_task_record (ir_id,ir_cid,ir_task_id,ir_uid,ir_gold_coin,ir_state,ir_create_time,ir_update_time) values (#{id,jdbcType=BIGINT},#{cid,jdbcType=BIGINT},#{taskId,jdbcType=BIGINT},#{uid,jdbcType=BIGINT},#{goldCoin,jdbcType=INTEGER},#{state,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP}) </insert> <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.integral.IntegralTaskRecord" useGeneratedKeys="true" keyProperty="id"> insert into yeshi_ec_integral_task_record <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">ir_id,</if> <if test="cid != null">ir_cid,</if> <if test="taskId != null">ir_task_id,</if> <if test="uid != null">ir_uid,</if> <if test="goldCoin != null">ir_gold_coin,</if> <if test="state != null">ir_state,</if> <if test="createTime != null">ir_create_time,</if> <if test="updateTime != null">ir_update_time,</if> </trim> values <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">#{id,jdbcType=BIGINT},</if> <if test="cid != null">#{cid,jdbcType=BIGINT},</if> <if test="taskId != null">#{taskId,jdbcType=BIGINT},</if> <if test="uid != null">#{uid,jdbcType=BIGINT},</if> <if test="goldCoin != null">#{goldCoin,jdbcType=INTEGER},</if> <if test="state != null">#{state,jdbcType=INTEGER},</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.integral.IntegralTaskRecord">update yeshi_ec_integral_task_record set ir_cid = #{cid,jdbcType=BIGINT},ir_task_id = #{taskId,jdbcType=BIGINT},ir_uid = #{uid,jdbcType=BIGINT},ir_gold_coin = #{goldCoin,jdbcType=INTEGER},ir_state = #{state,jdbcType=INTEGER},ir_create_time = #{createTime,jdbcType=TIMESTAMP},ir_update_time = #{updateTime,jdbcType=TIMESTAMP} where ir_id = #{id,jdbcType=BIGINT} </update> <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.integral.IntegralTaskRecord"> update yeshi_ec_integral_task_record <set> <if test="cid != null">ir_cid=#{cid,jdbcType=BIGINT},</if> <if test="taskId != null">ir_task_id=#{taskId,jdbcType=BIGINT},</if> <if test="uid != null">ir_uid=#{uid,jdbcType=BIGINT},</if> <if test="goldCoin != null">ir_gold_coin=#{goldCoin,jdbcType=INTEGER},</if> <if test="state != null">ir_state=#{state,jdbcType=INTEGER},</if> <if test="createTime != null">ir_create_time=#{createTime,jdbcType=TIMESTAMP},</if> <if test="updateTime != null">ir_update_time=#{updateTime,jdbcType=TIMESTAMP},</if> </set> where ir_id = #{id,jdbcType=BIGINT} </update> <update id="updateReceived" parameterType="Long"> UPDATE yeshi_ec_integral_task_record SET ir_state = 1,ir_update_time = NOW() WHERE ir_state = 0 AND ir_uid = #{uid} </update> <select id="listNotReceived" resultMap="BaseResultMap"> SELECT tc.`tc_name` AS taskName,d.* FROM yeshi_ec_integral_task_record d LEFT JOIN `yeshi_ec_integral_task_class` tc ON tc.`tc_id` = d.`ir_cid` WHERE d.`ir_uid` = #{uid} AND d.ir_state = 0 ORDER BY d.ir_create_time LIMIT #{count} </select> <select id="listNotReceivedExcludeId" resultMap="BaseResultMap"> SELECT tc.`tc_name` AS taskName,d.* FROM yeshi_ec_integral_task_record d LEFT JOIN `yeshi_ec_integral_task_class` tc ON tc.`tc_id` = d.`ir_cid` WHERE d.`ir_uid` = #{uid} AND d.ir_state = 0 <if test="list != null"> AND d.ir_id not in <foreach collection="list" item="item" open="(" separator="," close=")"> ${item} </foreach> </if> ORDER BY d.ir_create_time LIMIT #{count} </select> <select id="getTotalGoldCoin" resultType="Integer"> SELECT IFNULL(SUM(tr.`ir_gold_coin`),0) FROM yeshi_ec_integral_task_record tr WHERE tr.ir_uid = #{uid} AND tr.`ir_cid`=#{cid} <!-- tr.ir_state <![CDATA[<>]]>2 AND --> <if test="dateType == 1"> AND TO_DAYS(tr.ir_create_time) = TO_DAYS(NOW()) </if> </select> <select id="countFinished" resultType="Integer"> SELECT IFNULL(COUNT(tr.`ir_id`),0) FROM yeshi_ec_integral_task_record tr WHERE tr.ir_uid = #{uid} AND tr.`ir_cid`=#{cid} <if test="dateType == 1"> AND TO_DAYS(tr.ir_create_time) = TO_DAYS(NOW()) </if> </select> <select id="listDaySignRecord" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_integral_task_record d WHERE d.`ir_uid` = #{uid} <if test="cid!=null"> and d.ir_cid=#{cid} </if> AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <![CDATA[<=]]> DATE(d.ir_create_time) ORDER BY d.ir_create_time desc </select> <select id="countTotalGoldCoin" resultType="Integer"> SELECT IFNULL(SUM(d.`ir_gold_coin`),0) FROM `yeshi_ec_integral_task_record` d WHERE d.`ir_uid` = #{uid} AND d.`ir_state` = 0 </select> <select id="countGetCountByTaskIdAndDay" resultType="Integer"> SELECT count(*) FROM `yeshi_ec_integral_task_record` d WHERE d.ir_task_id = #{taskId} <if test="uid!=null"> and ir_uid=#{uid} </if> <if test="minTime!=null"> and ir_create_time>=#{minTime} </if> <if test="maxTime!=null"> and #{maxTime}>ir_uid </if> </select> </mapper> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yeshi.fanli.dao.mybatis.integral.IntegralTaskRecordMapper"> <resultMap id="BaseResultMap" type="com.yeshi.fanli.entity.integral.IntegralTaskRecord"> <id column="ir_id" property="id" jdbcType="BIGINT" /> <result column="ir_cid" property="cid" jdbcType="BIGINT" /> <result column="ir_task_id" property="taskId" jdbcType="BIGINT" /> <result column="ir_uid" property="uid" jdbcType="BIGINT" /> <result column="ir_gold_coin" property="goldCoin" jdbcType="INTEGER" /> <result column="ir_state" property="state" jdbcType="INTEGER" /> <result column="ir_create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="ir_update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="taskName" property="taskName" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List">ir_id,ir_cid,ir_task_id,ir_uid,ir_gold_coin,ir_state,ir_create_time,ir_update_time </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long"> select <include refid="Base_Column_List" /> from yeshi_ec_integral_task_record where ir_id = #{id,jdbcType=BIGINT} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_integral_task_record where ir_id = #{id,jdbcType=BIGINT} </delete> <insert id="insert" parameterType="com.yeshi.fanli.entity.integral.IntegralTaskRecord" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_integral_task_record (ir_id,ir_cid,ir_task_id,ir_uid,ir_gold_coin,ir_state,ir_create_time,ir_update_time) values (#{id,jdbcType=BIGINT},#{cid,jdbcType=BIGINT},#{taskId,jdbcType=BIGINT},#{uid,jdbcType=BIGINT},#{goldCoin,jdbcType=INTEGER},#{state,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP}) </insert> <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.integral.IntegralTaskRecord" useGeneratedKeys="true" keyProperty="id"> insert into yeshi_ec_integral_task_record <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">ir_id,</if> <if test="cid != null">ir_cid,</if> <if test="taskId != null">ir_task_id,</if> <if test="uid != null">ir_uid,</if> <if test="goldCoin != null">ir_gold_coin,</if> <if test="state != null">ir_state,</if> <if test="createTime != null">ir_create_time,</if> <if test="updateTime != null">ir_update_time,</if> </trim> values <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">#{id,jdbcType=BIGINT},</if> <if test="cid != null">#{cid,jdbcType=BIGINT},</if> <if test="taskId != null">#{taskId,jdbcType=BIGINT},</if> <if test="uid != null">#{uid,jdbcType=BIGINT},</if> <if test="goldCoin != null">#{goldCoin,jdbcType=INTEGER},</if> <if test="state != null">#{state,jdbcType=INTEGER},</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.integral.IntegralTaskRecord">update yeshi_ec_integral_task_record set ir_cid = #{cid,jdbcType=BIGINT},ir_task_id = #{taskId,jdbcType=BIGINT},ir_uid = #{uid,jdbcType=BIGINT},ir_gold_coin = #{goldCoin,jdbcType=INTEGER},ir_state = #{state,jdbcType=INTEGER},ir_create_time = #{createTime,jdbcType=TIMESTAMP},ir_update_time = #{updateTime,jdbcType=TIMESTAMP} where ir_id = #{id,jdbcType=BIGINT} </update> <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.integral.IntegralTaskRecord"> update yeshi_ec_integral_task_record <set> <if test="cid != null">ir_cid=#{cid,jdbcType=BIGINT},</if> <if test="taskId != null">ir_task_id=#{taskId,jdbcType=BIGINT},</if> <if test="uid != null">ir_uid=#{uid,jdbcType=BIGINT},</if> <if test="goldCoin != null">ir_gold_coin=#{goldCoin,jdbcType=INTEGER},</if> <if test="state != null">ir_state=#{state,jdbcType=INTEGER},</if> <if test="createTime != null">ir_create_time=#{createTime,jdbcType=TIMESTAMP},</if> <if test="updateTime != null">ir_update_time=#{updateTime,jdbcType=TIMESTAMP},</if> </set> where ir_id = #{id,jdbcType=BIGINT} </update> <update id="updateReceived" parameterType="Long"> UPDATE yeshi_ec_integral_task_record SET ir_state = 1,ir_update_time = NOW() WHERE ir_state = 0 AND ir_uid = #{uid} </update> <select id="listNotReceived" resultMap="BaseResultMap"> SELECT tc.`tc_name` AS taskName,d.* FROM yeshi_ec_integral_task_record d LEFT JOIN `yeshi_ec_integral_task_class` tc ON tc.`tc_id` = d.`ir_cid` WHERE d.`ir_uid` = #{uid} AND d.ir_state = 0 ORDER BY d.ir_create_time LIMIT #{count} </select> <select id="listNotReceivedExcludeId" resultMap="BaseResultMap"> SELECT tc.`tc_name` AS taskName,d.* FROM yeshi_ec_integral_task_record d LEFT JOIN `yeshi_ec_integral_task_class` tc ON tc.`tc_id` = d.`ir_cid` WHERE d.`ir_uid` = #{uid} AND d.ir_state = 0 <if test="list != null"> AND d.ir_id not in <foreach collection="list" item="item" open="(" separator="," close=")"> ${item} </foreach> </if> ORDER BY d.ir_create_time LIMIT #{count} </select> <select id="getTotalGoldCoin" resultType="Integer"> SELECT IFNULL(SUM(tr.`ir_gold_coin`),0) FROM yeshi_ec_integral_task_record tr WHERE tr.ir_uid = #{uid} AND tr.`ir_cid`=#{cid} <!-- tr.ir_state <![CDATA[<>]]>2 AND --> <if test="dateType == 1"> AND TO_DAYS(tr.ir_create_time) = TO_DAYS(NOW()) </if> </select> <select id="countFinished" resultType="Integer"> SELECT IFNULL(COUNT(tr.`ir_id`),0) FROM yeshi_ec_integral_task_record tr WHERE tr.ir_uid = #{uid} AND tr.`ir_cid`=#{cid} <if test="dateType == 1"> AND TO_DAYS(tr.ir_create_time) = TO_DAYS(NOW()) </if> </select> <select id="listDaySignRecord" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_integral_task_record d WHERE d.`ir_uid` = #{uid} <if test="cid!=null"> and d.ir_cid=#{cid} </if> AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <![CDATA[<=]]> DATE(d.ir_create_time) ORDER BY d.ir_create_time desc </select> <select id="countTotalGoldCoin" resultType="Integer"> SELECT IFNULL(SUM(d.`ir_gold_coin`),0) FROM `yeshi_ec_integral_task_record` d WHERE d.`ir_uid` = #{uid} AND d.`ir_state` = 0 </select> <select id="countGetCountByTaskIdAndDay" resultType="Integer"> SELECT count(*) FROM `yeshi_ec_integral_task_record` d WHERE d.ir_task_id = #{taskId} <if test="uid!=null"> and ir_uid=#{uid} </if> <if test="minTime!=null"> and ir_create_time>=#{minTime} </if> <if test="maxTime!=null"> and #{maxTime}>ir_uid </if> </select> <select id="countByTaskIdTodayNum" resultType="Integer"> SELECT IFNULL(COUNT(tr.`ir_id`),0) FROM yeshi_ec_integral_task_record tr WHERE tr.ir_uid = #{uid} AND tr.`ir_task_id`= #{tid} AND TO_DAYS(tr.ir_create_time) = TO_DAYS(${date}) AND tr.ir_create_time <![CDATA[<=]]>${date} </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeServiceImpl.java
@@ -16,6 +16,7 @@ import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.bus.user.UserSystemCoupon; import com.yeshi.fanli.entity.integral.CodePublishRecord; import com.yeshi.fanli.entity.integral.IntegralDetail; import com.yeshi.fanli.entity.integral.IntegralExchange; import com.yeshi.fanli.entity.integral.IntegralExchange.ExchangeTypeEnum; import com.yeshi.fanli.entity.money.UserMoneyDetail; @@ -24,6 +25,7 @@ import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.integral.CodePublishRecordService; import com.yeshi.fanli.service.inter.integral.IntegralDetailService; import com.yeshi.fanli.service.inter.integral.IntegralExchangeRecordService; import com.yeshi.fanli.service.inter.integral.IntegralExchangeService; import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService; @@ -80,6 +82,8 @@ @Resource private MsgInviteDetailService msgInviteDetailService; @Resource private IntegralDetailService integralDetailService; @Override @@ -212,33 +216,41 @@ } String thing = ""; String thingNum = ""; int couponNews = 0; try { if (ExchangeTypeEnum.freeCouponBuy == type) { thing = "自购免单券"; thingNum = "1张"; userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, null); couponNews = 1; } else if (ExchangeTypeEnum.freeCouponGive == type) { thing = "赠送免单券"; thingNum = "1张"; userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, null); couponNews = 1; } else if (ExchangeTypeEnum.rebatePercentCoupon == type) { thing = "奖励免单券"; thingNum = "3天"; String percent = configService.get("exchange_rebate_percent"); userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, new BigDecimal(percent)); couponNews = 1; } else if (ExchangeTypeEnum.inviteCodePublish == type) { thing = "邀请码发布卡"; thingNum = "1组"; if(codePublishRecordService.countValidRecord(uid) > 0) throw new IntegralExchangeException(1, "三天之内不可重复兑换"); codePublishRecordService.publishInviteCode(uid); } else if (ExchangeTypeEnum.taoLiJin == type) { thing = "推广红包"; thingNum = exchange.getAmount() + "元"; userTaoLiJinOriginService.exchangeMoney(uid, exchange.getAmount()); } else if (ExchangeTypeEnum.cash == type) { thing = "现金红包"; BigDecimal money = exchange.getAmount(); thingNum = money + "元"; // 1、插入红包数据 HongBaoV2 hongBaoV2 = new HongBaoV2(); hongBaoV2.setMoney(money); @@ -282,6 +294,14 @@ // 添加兑换记录 integralExchangeRecordService.addExchangeRecord(id, uid); // 加入明细 IntegralDetail detail = new IntegralDetail(); detail.setUid(uid); detail.setTitle("金币兑换-" + thing + "-" + thingNum); detail.setMoney(-goldCoin); detail.setCreateTime(new Date()); integralDetailService.insertSelective(detail); // 消息 final String things = thing; @@ -392,7 +412,14 @@ extraUpdate.setGoldCoin(surplus); userInfoExtraService.saveUserInfoExtra(extraUpdate); // 加入明细 IntegralDetail detail = new IntegralDetail(); detail.setUid(uid); detail.setTitle("金币兑换-邀请码激活卡-1组"); detail.setMoney(-goldCoin); detail.setCreateTime(new Date()); integralDetailService.insertSelective(detail); // 添加兑换记录 integralExchangeRecordService.addExchangeRecord(id, uid); fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralTaskClassServiceImpl.java
@@ -52,6 +52,12 @@ @Override public IntegralTaskClass selectByPrimaryKey(Long id) { return integralTaskClassMapper.selectByPrimaryKey(id); } @Override public List<IntegralTaskClassVO> getIntegralTaskClassVO(Long uid, long start, int count) { return integralTaskClassMapper.getIntegralTaskClassVO(start, count); } fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralTaskRecordServiceImpl.java
@@ -16,11 +16,14 @@ import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.integral.IntegralDetail; import com.yeshi.fanli.entity.integral.IntegralTask; import com.yeshi.fanli.entity.integral.IntegralTask.FrequencyEnum; import com.yeshi.fanli.entity.integral.IntegralTaskClass; import com.yeshi.fanli.entity.integral.IntegralTaskRecord; import com.yeshi.fanli.exception.integral.IntegralTaskRecordException; import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.integral.IntegralDetailService; import com.yeshi.fanli.service.inter.integral.IntegralTaskClassService; import com.yeshi.fanli.service.inter.integral.IntegralTaskRecordService; import com.yeshi.fanli.service.inter.integral.IntegralTaskService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; @@ -34,14 +37,15 @@ @Resource private UserInfoExtraService userInfoExtraService; @Resource private IntegralDetailService integralDetailService; @Resource private IntegralTaskService integralTaskService; @Resource private IntegralTaskClassService integralTaskClassService; @Override public Integer getTotalGoldCoin(long uid, Long cid, Integer dateType) { @@ -151,47 +155,14 @@ if (userInfoExtra == null) throw new IntegralTaskRecordException(1, "用户信息不全"); List<IntegralTaskRecord> list = integralTaskRecordMapper.listNotReceived(Integer.MAX_VALUE, uid); if (list == null || list.size() == 0) throw new IntegralTaskRecordException(1, "暂无可领取"); Integer totalGoldCoin = 0; List<IntegralTaskRecord> list = integralTaskRecordMapper.listNotReceived(Integer.MAX_VALUE, uid); if (list == null || list.size() == 0) throw new IntegralTaskRecordException(1, "暂无可领取"); Integer totalGoldCoin = 0; for (IntegralTaskRecord record : list) { Long uid2 = record.getUid(); if (uid2 == null || uid.longValue() != uid2.longValue()) continue; // 用户id不符合 if (record.getState() != null && record.getState().intValue() == 1) { continue; // 已领取 } IntegralTaskRecord taskRecord = new IntegralTaskRecord(); taskRecord.setId(record.getId()); taskRecord.setState(1); // 已领取 taskRecord.setUpdateTime(new Date()); integralTaskRecordMapper.updateByPrimaryKeySelective(taskRecord); Long taskId = record.getTaskId(); if (taskId == null) continue; IntegralTask integralTask = integralTaskService.selectByPrimaryKey(taskId); if (integralTask == null) continue; // 加入明细 IntegralDetail detail = new IntegralDetail(); detail.setUid(uid); detail.setCreateTime(new Date()); detail.setMoney(record.getGoldCoin()); detail.setTitle(integralTask.getName()); integralDetailService.insertSelective(detail); totalGoldCoin += record.getGoldCoin(); if (addDetail(uid, record)) totalGoldCoin += record.getGoldCoin(); } Integer goldCoin = userInfoExtra.getGoldCoin(); @@ -228,39 +199,8 @@ if (record == null) continue; Long uid2 = record.getUid(); if (uid2 == null || uid.longValue() != uid2.longValue()) continue; // 用户id不符合 if (record.getState() != null && record.getState().intValue() == 1) { continue; // 已领取 } IntegralTaskRecord taskRecord = new IntegralTaskRecord(); taskRecord.setId(record.getId()); taskRecord.setState(1); // 已领取 taskRecord.setUpdateTime(new Date()); integralTaskRecordMapper.updateByPrimaryKeySelective(taskRecord); Long taskId = record.getTaskId(); if (taskId == null) continue; IntegralTask integralTask = integralTaskService.selectByPrimaryKey(taskId); if (integralTask == null) continue; // 加入明细 IntegralDetail detail = new IntegralDetail(); detail.setUid(uid); detail.setCreateTime(new Date()); detail.setMoney(record.getGoldCoin()); detail.setTitle(integralTask.getName()); integralDetailService.insertSelective(detail); totalGoldCoin += record.getGoldCoin(); if (addDetail(uid, record)) totalGoldCoin += record.getGoldCoin(); } Integer goldCoin = userInfoExtra.getGoldCoin(); @@ -279,6 +219,62 @@ return extra.getGoldCoin(); } public boolean addDetail(Long uid, IntegralTaskRecord record) throws IntegralTaskRecordException { Long uid2 = record.getUid(); if (uid2 == null || uid.longValue() != uid2.longValue()) return false; // 用户id不符合 if (record.getState() != null && record.getState().intValue() == 1) { return false; // 已领取 } IntegralTaskRecord taskRecord = new IntegralTaskRecord(); taskRecord.setId(record.getId()); taskRecord.setState(1); // 已领取 taskRecord.setUpdateTime(new Date()); integralTaskRecordMapper.updateByPrimaryKeySelective(taskRecord); Long cid = record.getCid(); if (cid == null) return false; IntegralTaskClass taskClass = integralTaskClassService.selectByPrimaryKey(cid); if (taskClass == null) return false; Long taskId = record.getTaskId(); if (taskId == null) return false; IntegralTask integralTask = integralTaskService.selectByPrimaryKey(taskId); if (integralTask == null) return false; int num = 0; FrequencyEnum frequency = integralTask.getFrequency(); if (frequency == FrequencyEnum.everyday) { num = integralTaskRecordMapper.countByTaskIdTodayNum(uid, taskId, record.getCreateTime()); } else if (frequency == FrequencyEnum.onlyOne) { num = 1; } if (num <= 0) num = 1; String title = taskClass.getName() + "-" + integralTask.getName() + "-" + num + "次"; // 加入明细 IntegralDetail detail = new IntegralDetail(); detail.setUid(uid); detail.setTitle(title); detail.setMoney(record.getGoldCoin()); detail.setCreateTime(record.getCreateTime()); integralDetailService.insertSelective(detail); return true; } @Override public Integer countGetCountByTaskIdAndDay(Long taskId, Long uid, Date day) { if (day == null) fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -1266,7 +1266,6 @@ userSystemCouponRecordService.updateByPrimaryKeySelective(couponRecord); UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon(); // 状态初始化 userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE); userSystemCoupon.setUseTime(null); @@ -1367,8 +1366,10 @@ Date now = new Date(); Date endTime = userCoupon.getEndTime(); if (endTime != null && endTime.getTime() < now.getTime()) { // TODO 过期 // 过期 List<UserSystemCoupon> list = new ArrayList<UserSystemCoupon>(); list.add(userCoupon); updateCounponInvalid(list); return; } @@ -1730,7 +1731,7 @@ userCouponVO.setCouponPicture(systemCoupon.getPicture()); } if (UserSystemCoupon.STATE_CAN_USE == state) { if (UserSystemCoupon.STATE_CAN_USE == state || UserSystemCoupon.STATE_IN_USE == state) { int differentDays = 0; if (endTime != null && startTime != null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -1830,12 +1831,19 @@ } tips = tips.replace("{口令}", tokenRecord.getToken()).replace("{下载链接}", configService.get("app_down_link")); } Date endTimeGive = record.getEndTime(); if (endTimeGive != null) { Map<String, Object> remainDays = new HashMap<String, Object>(); remainDays.put("content", "剩余" + DateUtil.dateDiff2(new Date(), endTimeGive) + "过期"); remainDays.put("fontColor", "#F14242"); userCouponVO.setRemainDays(remainDays); } } } else { tips = ""; } userCouponVO.setGiveTips(tips); } else if (UserSystemCoupon.STATE_END_USE == state) { if (give && CouponTypeEnum.freeCouponGive == type) { userCouponVO.setState(UserSystemCoupon.STATE_GIVE_END); @@ -1983,8 +1991,9 @@ Date now = new Date(); Date endTime = userCoupon.getEndTime(); if (endTime != null && endTime.getTime() < now.getTime()) { // TODO 过期 List<UserSystemCoupon> list = new ArrayList<UserSystemCoupon>(); list.add(userCoupon); updateCounponInvalid(list); continue; } fanli/src/main/java/com/yeshi/fanli/service/inter/integral/IntegralTaskClassService.java
@@ -47,5 +47,7 @@ */ public IntegralTaskClass getByUniqueKey(String uniqueKey); public IntegralTaskClass selectByPrimaryKey(Long id); } utils/src/main/java/org/yeshi/utils/DateUtil.java
@@ -37,7 +37,7 @@ public static String dateDiff2(Date startTime, Date endTime) throws Exception { String datatime = 0 + "天" + 0 + "小时" + 0 + "分钟"; String datatime = "0分钟"; long nm = 1000 * 60;// 一分钟的毫秒数 long nh = 1000 * 60 * 60;// 一小时的毫秒数 @@ -45,13 +45,19 @@ // 获得两个时间的毫秒时间差异 long diff = endTime.getTime() - startTime.getTime(); long day = diff / nd;// 计算差多少天 long hour = diff % nd / nh;// 计算差多少小时 long min = diff % nd % nh / nm;// 计算差多少分钟 datatime = day + "天" + hour + "小时" + min + "分钟"; if (day > 0) { datatime = day + "天" + hour + "时" + min + "分"; } else { if (hour > 0 ) { datatime = hour + "时" + min + "分"; } else { datatime = min + "分"; } } return datatime; }