123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- package com.iamberry.wechat.service.member;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import com.iamberry.app.tool.log.RatFWLogger;
- import com.iamberry.wechat.core.entity.coupon.CouponItem;
- import com.iamberry.wechat.core.entity.coupon.CouponType;
- import com.iamberry.wechat.face.ism.IntegralLogService;
- import com.iamberry.wechat.service.mapper.CouponItemMapper;
- import com.iamberry.wechat.service.mapper.CouponTypeMapper;
- import com.iamberry.wechat.tools.ResultInfo;
- import com.iamberry.wechat.tools.SendMessageUtil;
- import com.iamberry.wechat.tools.StrUtils;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.iamberry.wechat.core.entity.Page;
- import com.iamberry.wechat.core.entity.drp.PlaceInfo;
- import com.iamberry.wechat.core.entity.member.Member;
- import com.iamberry.wechat.face.member.MemberService;
- import com.iamberry.wechat.face.qrcode.QrcodeService;
- import com.iamberry.wechat.service.mapper.PlaceInfoMapper;
- import com.iamberry.wechat.service.member.dao.MemberDao;
- import com.iamberry.wechat.service.system.dao.SystemDao;
- import org.springframework.transaction.annotation.Transactional;
- /**
- * 会员信息 service 实现
- * 2016年4月21日
- * @author Administrator
- *
- */
- @Service
- public class MemberServiceImpl implements MemberService {
- @Autowired
- private MemberDao memberDao;
- @Autowired
- private PlaceInfoMapper placeInfoMapper;
- @Autowired
- public QrcodeService qrcodeService;
- @Autowired
- public SystemDao systemDao;
- @Autowired
- public CouponTypeMapper couponTypeMapper;
- @Autowired
- public CouponItemMapper couponItemMapper;
- @Autowired
- private IntegralLogService integralLogService;
- @Autowired
- private SendMessageUtil sendMessageUtil;
- @Autowired
- private RatFWLogger logger;
- /**
- * 根据userid得到会员信息
- * @param userId
- * @return
- */
- @Override
- public Member getMemberByUserId(Integer userId) {
- // TODO Auto-generated method stub
- return memberDao.getMemberByUserId(userId);
- }
-
- /**
- * 根据 openid 查询一个member
- * 2016年4月28日
- * @author 穆再兴
- * @return
- */
- public Member getMemberByUserOpenId(String openid){
- return memberDao.getMemberByUserOpenId(openid);
- }
- @Override
- public Integer getCount() {
- return memberDao.getCount();
- }
- @Override
- public List<Member> getMemberByPage(Page page) {
- // TODO Auto-generated method stub
- return memberDao.getMemberByPage(page);
- }
- @Override
- public Integer updateUserIntegral(Member member) {
- // TODO Auto-generated method stub
- return memberDao.updateUserIntegral(member);
- }
- /**
- * 根据 userid 修改会员信息
- * 2016年4月21日
- * @author 穆再兴
- * @param userId
- * @return
- */
- @Override
- public Integer updateMemberByUserId(Member member){
- return memberDao.updateMemberByUserId(member);
- }
- @Override
- public Integer updateUserUseIntegral(Member member) {
- // TODO Auto-generated method stub
- return memberDao.updateUserUseIntegral(member);
- }
- @Override
- public List<Member> selectUserIntegralByWechatProxyId(Page page) {
- // TODO Auto-generated method stub
- return memberDao.selectUserIntegralByWechatProxyId(page);
- }
- @Override
- public Member selectUserIdentityAndQrcodeByOpenId(String openid) {
- // TODO Auto-generated method stub
- return memberDao.selectUserIdentityAndQrcodeByOpenId(openid);
- }
- @Override
- public Member selectUserResAndIdSByOpenId(String openid) {
- // TODO Auto-generated method stub
- return memberDao.selectUserResAndIdSByOpenId(openid);
- }
-
- /**
- * 根据 openid 修改用户可用金额
- * 2016年5月4日
- * @param member
- * @return
- */
- public Integer updateUserIncomeByOpenId(Member member){
- return memberDao.updateUserIncomeByOpenId(member);
- }
- @Override
- public boolean updateUserFlagByOpenId(String openId) {
- // TODO Auto-generated method stub
- return memberDao.updateUserFlagByOpenId(openId) >= 1 ? true : false;
- }
-
- /**
- * 根据userid获取当前用户的“下线人数”和“已购买人数”
- * 2016年5月11日
- * @param openId
- * @return
- */
- public List<Integer> selectDownCountByUserId(Integer userId){
- return memberDao.selectDownCountByUserId(userId);
- }
- @Override
- public boolean buildChildUser(String shareOpenid, Member member,int userType) {
- // TODO Auto-generated method stub
- if(StringUtils.isNotEmpty(shareOpenid) && member != null){
- //绑定关系
- if(!shareOpenid.equals(member.getUserOpenid())){//用户点击自己分享的链接则不绑定
- boolean flag = false;
- if(userType == 1){
- //绑定为微代理下线
- flag = qrcodeService.bulidUser(member.getUserOpenid(), shareOpenid, 1);
- }else if(userType == 2){
- PlaceInfo placeInfo = placeInfoMapper.getOnePlaceInfo2(shareOpenid);
- //内容格式:商户层可以绑定关系的角色id:41,42 41 42 分别为可以绑定关系的角色id
- String str = systemDao.selectOneShopRuleById(121).getRuleDesc();
- //System.out.println("--systemDao.selectOneShopRuleById(121).getRuleDesc()-------------------------" + str);
- String rolesStr = str.split(":")[1];
- String[] roleArr = rolesStr.split(",");
- if(placeInfo != null &&
- Arrays.asList(roleArr).contains(Integer.toString(placeInfo.getRoleId()))){
- //改商户存在并且为可以绑定关系的就是 则绑定为其下线
- flag = qrcodeService.bulidUser(member.getUserOpenid(), placeInfo.getId(), 2);
- }
- }
- return flag;
- }
- }
- return false;
- }
- @Override
- public Map<String, Object> getDownInfoAndBuyedCount(Page page) {
- List<Member> list = memberDao.selectUserIntegralByWechatProxyId(page);
-
- List<Integer> countList = memberDao.selectDownCountByUserId(page.getTotalRecord()); //page.getTotalRecord 用户userid
- int downNum = 0; //下线人数
- int buyedNum = 0; //已购买人数
- if(countList.size() == 2){
- downNum = countList.get(0);
- buyedNum = countList.get(1);
- }
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("downNum", downNum);
- map.put("buyedNum", buyedNum);
- if(list.size()>0){
- map.put("beginNo", list.get(0).getUserId());
- map.put("endNo", list.get(list.size()-1).getUserId());
- }
- map.put("list", list);
- return map;
- }
- @Override
- public Integer nowUpdateUserByOpenId(Member member) {
- return memberDao.nowUpdateUserByOpenId(member);
- }
- @Override
- @Transactional
- public Integer becomeVipByOpenId(Member member) {
- Integer flag = memberDao.becomeVipByOpenId(member);
- if(flag < 1){
- throw new RuntimeException("成为会员失败");
- }
- flag = integralLogService.updateIntegral(member.getUserOpenid(),1,1);
- if(flag < 1){
- throw new RuntimeException("添加积分失败");
- }
- Integer couponId = 40001;
- CouponType couponType = couponTypeMapper.getCouponTypeById(couponId);
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.DATE,90);
- calendar.set(Calendar.HOUR_OF_DAY,23);
- calendar.set(Calendar.MINUTE,59);
- calendar.set(Calendar.SECOND,50);
- //创建优惠券
- CouponItem couponItem = new CouponItem();
- String uuidStr = StrUtils.getUUID();
- couponItem.setCouponItemId(uuidStr);
- couponItem.setCouponItemUseropenid(member.getUserOpenid());
- couponItem.setCouponId(couponType.getCouponId());
- couponItem.setCouponReceiveDate(new Date());
- couponItem.setCouponUseEndDate(calendar.getTime());
- couponItem.setCouponUseStatus(1);
- couponItem.setCouponItemRemark(couponType.getCouponRemark());
- flag = couponItemMapper.insertCouponItem(couponItem);
- if(flag < 1){
- throw new RuntimeException("赠送买一送一优惠券失败");
- }
- //当天生日,当天送
- SimpleDateFormat sdf = new SimpleDateFormat("MMdd");
- String memberBirhDate = sdf.format(member.getUserBirthDate());
- String nowDate = sdf.format(new Date());
- if(nowDate.equals(memberBirhDate)){
- Integer nowcouponId = 40000;
- CouponType nowcouponType = couponTypeMapper.getCouponTypeById(nowcouponId);
- Calendar nowcalendar = Calendar.getInstance();
- nowcalendar.set(Calendar.HOUR_OF_DAY,23);
- nowcalendar.set(Calendar.MINUTE,59);
- nowcalendar.set(Calendar.SECOND,50);
- //创建优惠券
- CouponItem nowcouponItem = new CouponItem();
- String nowuuidStr = StrUtils.getUUID();
- nowcouponItem.setCouponItemId(nowuuidStr);
- nowcouponItem.setCouponItemUseropenid(member.getUserOpenid());
- nowcouponItem.setCouponId(nowcouponType.getCouponId());
- nowcouponItem.setCouponReceiveDate(new Date());
- nowcouponItem.setCouponUseEndDate(nowcalendar.getTime());
- nowcouponItem.setCouponUseStatus(1);
- nowcouponItem.setCouponItemRemark(nowcouponType.getCouponRemark());
- flag = couponItemMapper.insertCouponItem(nowcouponItem);
- if(flag < 1){
- throw new RuntimeException("赠送生日优惠券失败");
- }
- }
- try {
- sendMessageUtil.recommendUseCoupon(
- "亲爱的用户,恭喜您注册成功!现在就可享受专属会员折扣(购买滤芯产品88折,非滤芯产品95折),100会员积分、单支滤芯买一送一优惠券已发放至您的账户。",
- "会员积分+会员专享折扣+滤芯买赠优惠券",
- "单支滤芯买一送一优惠券有效期3个月",
- "可在“我的爱贝源-会员中心”查看积分及优惠券,请及时使用优惠券。",
- member.getUserOpenid(),
- ResultInfo.COUPON_URL);
- }catch (Exception e){
- logger.info("注册成功提醒使用优惠券失败,失败openId:" + member.getUserOpenid());
- e.printStackTrace();
- }
- return flag;
- }
- @Override
- public List<Member> getNowBirthDate() {
- return memberDao.getNowBirthDate();
- }
- @Override
- public List<Member> getNoRegister(Member member) {
- return memberDao.getNoRegister(member);
- }
- }
|