jyy
2021-04-20 f50e081f650eb067cce44fce3db64a237fde145b
Merge remote-tracking branch 'origin/score_shop' into score_shop
6 files modified
519 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java 137 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java 98 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java 8 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml 8 ●●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java 266 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java
@@ -25,4 +25,6 @@
    ZjrVo selectUsernameByUserId(@Param("userId")Long userId, @Param("receiveId")Long receiveId);
    ShopDeliveryInfo selectShopDeliveryInfoByLogisticsId(@Param("logisticsId")Integer logisticsId);
    ActivitySignWriteoff selectActivitySignWriteoffByUserIDAndReceiveId(@Param("logisticsId")Long id, @Param("logisticsId")long receiveId);
}
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java
@@ -27,6 +27,7 @@
import com.matrix.system.common.dao.SystemDictionaryDao;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
import com.matrix.system.shopXcx.bean.ShopLogisticsInfo;
@@ -65,6 +66,8 @@
    ShopDeliveryInfoDao shopDeliveryInfoDao;
    @Autowired
    ShopLogisticsInfoDao shopLogisticsInfoDao;
    @Autowired
    private WxShopLogisticsQueryService wxShopLogisticsQueryService;
    public IPage<SignWriteoffListVo> findSignWriteoffList(Page<SignWriteoffListVo> page,
            SignWriteoffListDto signWriteoffListDto) {
@@ -108,20 +111,22 @@
                
                //物流跟踪
                Integer logisticsId = activitySignWriteoffLogistics.getLogisticsId();
                if(ObjectUtil.isNotEmpty(logisticsId)) {
                    List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(logisticsId);
                    if(CollUtil.isNotEmpty(shopLogisticsInfos)) {
                        ArrayList<LogisticsVo> logisticsVos = new ArrayList<>();
                        for(ShopLogisticsInfo shopLogistics : shopLogisticsInfos) {
                            LogisticsVo logisticsVo = new LogisticsVo();
                            logisticsVo.setContent(shopLogistics.getDescribe());
                            logisticsVo.setTimestamp(shopLogistics.getLogisticsTime());
                            logisticsVos.add(logisticsVo);
                        }
                        signWriteoffVo.setActivities(logisticsVos);
                    }
                }
                ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId);
                if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){
                    //查看物流信息
                    wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo);
                    List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
                    if(CollUtil.isNotEmpty(shopLogisticsInfos)) {
                        ArrayList<LogisticsVo> logisticsVos = new ArrayList<>();
                        for(ShopLogisticsInfo shopLogistics : shopLogisticsInfos) {
                            LogisticsVo logisticsVo = new LogisticsVo();
                            logisticsVo.setContent(shopLogistics.getDescribe());
                            logisticsVo.setTimestamp(shopLogistics.getLogisticsTime());
                            logisticsVos.add(logisticsVo);
                        }
                        signWriteoffVo.setActivities(logisticsVos);
                    }
                }
            }
        }
        result.putInMap("signWriteoffVo", signWriteoffVo);
@@ -194,96 +199,20 @@
        shopDeliveryInfo.setDeliveryTime(new Date());
        shopDeliveryInfoDao.insert(shopDeliveryInfo);
//        Integer id = shopDeliveryInfo.getId();
//        if(ObjectUtil.isNotEmpty(id)) {
//            List<ShopLogisticsInfo> shopLogisticsList = new ArrayList<ShopLogisticsInfo>();
//            AjaxResult result = new AjaxResult();
//            Map<String, String> logisticsInfo = new HashMap<String, String>();
//            try {
//                if (shopDeliveryInfo == null) {
//                    return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息");
//                }
//                if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) {
//                    return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空");
//                }
//                logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
//                logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
//
//                //如果已经签收直接查数据库
//                if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) {
//
//                    List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
//                    logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR));
//                    result.setStatus(AjaxResult.STATUS_SUCCESS);
//                    result.setRows(shopLogisticsInfos);
//                    result.putInMap("logisticsInfo", logisticsInfo);
//                    return result;
//                }
//                Map<String, String> param = new HashMap<String, String>();
//                param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode());
//                param.put("LogisticCode", shopDeliveryInfo.getWaybillNo());
//                Map<String, String> paramsUrl = getparams(param);
//                LogUtil.info("物流查询参数" + paramsUrl);
//                String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl);
//                LogUtil.info("查询物流返回信息" + logisticsResult);
//                LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class);
//                if (logisticsInfoVo.isSuccess()) {
//                    ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo();
//                    shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState()));
//                    shopDelivery.setId(shopDeliveryInfo.getId());
//                    logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState());
//                    //更新物流状态
//                    shopDeliveryInfoDao.updateByModel(shopDelivery);
//                    if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) {
//                        List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces();
//                        for (int i = 0; i < mapTraces.size(); i++) {
//                            ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo();
//                            shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER);
//                            shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER);
//                            shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime"));
//                            String acceptStation = mapTraces.get(i).get("AcceptStation");
//                            shopLogisticsInfo.setDescribe(acceptStation);
//                            shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId());
//                            if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR);
//                            } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
//                            } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY);
//                            } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE);
//                            } else {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE);
//                            }
//                            shopLogisticsList.add(shopLogisticsInfo);
//                        }
//                        shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId());
//                        if (CollectionUtils.isNotEmpty(shopLogisticsList)) {
//                            shopLogisticsInfoDao.batchInsert(shopLogisticsList);
//                        }
//                    }
//                } else {
//                    throw new GlobleException(logisticsInfoVo.getReason());
//                }
//
//            } catch (Exception e) {
//                throw new GlobleException("物流信息查询失败");
//            }
            //更新核销记录
            activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
            activitySignWriteoff.setWriteoffTime(new Date());
            activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
            activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
            activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId());
            activitySignWriteoffDao.updateById(activitySignWriteoff);
            //更新领取记录
            ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
            activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_THREE);
            activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr());
            activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz());
            activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh());
            activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
//        }
        //更新核销记录
        activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
        activitySignWriteoff.setWriteoffTime(new Date());
        activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
        activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
        activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId());
        activitySignWriteoffDao.updateById(activitySignWriteoff);
        //更新领取记录
        ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
        activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_THREE);
        activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr());
        activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz());
        activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh());
        activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "发货成功");
    }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java
@@ -9,6 +9,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.activity.dao.ActivitySignAwardSetDao;
@@ -22,9 +23,14 @@
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto;
import com.matrix.system.shopXcx.api.dto.SignAwardDto;
import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService;
import com.matrix.system.shopXcx.api.vo.*;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
import com.matrix.system.shopXcx.bean.ShopLogisticsInfo;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao;
import com.matrix.system.shopXcx.vo.SalesOrderVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -63,6 +69,15 @@
    
    @Autowired
    private ActivitySignRecordDao activitySignRecordDao;
    @Autowired
    ShopDeliveryInfoDao shopDeliveryInfoDao;
    @Autowired
    private ShopLogisticsInfoDao shopLogisticsInfoDao;
    @Autowired
    private WxShopLogisticsQueryService wxShopLogisticsQueryService;
    
    @ApiOperation(value = "获取签到基本信息", notes = "")
    @ApiResponses({
@@ -140,6 +155,56 @@
        ajaxResult.setData(signBasicInfoVo);
        return ajaxResult;
    }
    /**
     * 查看历史签到记录
     *
     * @param
     * @return
     */
    @ApiOperation(value = "查看历史签到记录", notes = "")
    @GetMapping(value = "getSignRecord/{actId}/{month}")
    @ResponseBody
    public AjaxResult getSignRecord(@PathVariable("actId") long actId,@PathVariable("month") String dateStr) {
        //获取登录人信息
        SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        Long companyId = loginUser.getCompanyId();
        Long userId = loginUser.getId();
        Date date = DateUtil.parse(dateStr);
        /**
         * 默认获取当前月份
         *      获取当前月份的天数
         */
        List<ActivitySignRecordVo> activitySignRecordVos = new ArrayList<>();
        //获取当前月的第一天是星期几
        DateTime dateTime = DateUtil.beginOfMonth(date);
        int i = DateUtil.dayOfWeek(dateTime);
        for(int j = 1;j<i;j++){
            ActivitySignRecordVo activitySignRecordVoNull = new ActivitySignRecordVo();
            activitySignRecordVos.add(activitySignRecordVoNull);
        }
        List<String> monthFullDays = getMonthFullDay(DateUtil.year(DateUtil.date()), DateUtil.month(DateUtil.date()) + 1);
        for(String monthFullDay : monthFullDays){
            ActivitySignRecordVo activitySignRecordVo = new ActivitySignRecordVo();
            activitySignRecordVo.setSignTime(monthFullDay);
            activitySignRecordVo.setActivityId(actId);
            activitySignRecordVo.setCompanyId(companyId);
            //对应日期是否已签到
            Date dateSign = DateUtil.parse(monthFullDay);
            ActivitySignRecord activitySignRecordDone = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,dateSign);
            if(ObjectUtil.isNotEmpty(activitySignRecordDone)){
                activitySignRecordVo.setState(1);
            }else{
                activitySignRecordVo.setState(2);
            }
            activitySignRecordVos.add(activitySignRecordVo);
        }
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult = AjaxResult.buildSuccessInstance("");
        ajaxResult.setData(activitySignRecordVos);
        return ajaxResult;
    }
    /**
     *  java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串)
     * @param year
@@ -445,7 +510,7 @@
     *
     * @return
     */
    @ApiOperation(value = "物流配送确认", notes = "")
    @ApiOperation(value = "物流配送信息查看", notes = "")
    @PostMapping(value = "/logisticsInsure")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = SeeAwardTextVo.class)
@@ -455,9 +520,40 @@
        seeAwardTextDto.setUserId(loginUser.getId());
        seeAwardTextDto.setCompanyId(loginUser.getCompanyId());
        SeeAwardTextVo seeAwardTextVO = activitySignReceiveRecordDao.selectSeeAwardTextVOById(seeAwardTextDto);
        long receiveId = seeAwardTextVO.getId();
        //获取核销记录的ID
        ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectActivitySignWriteoffByUserIDAndReceiveId(loginUser.getId(),receiveId);
        Integer logisticsId = activitySignWriteoff.getLogisticsId();
        ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId);
        if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){
            //查看物流信息
            wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo);
            List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
            seeAwardTextVO.setShopLogisticsInfos(shopLogisticsInfos);
        }
        AjaxResult result=AjaxResult.buildSuccessInstance(seeAwardTextVO);
        return result;
    }
    /**
     * 物流配送确认收货
     *
     * @param
     * @return
     */
    @ApiOperation(value = "物流配送确认收货", notes = "")
    @GetMapping(value = "logisticsInsureById/{awardId}")
    @ResponseBody
    public AjaxResult logisticsInsureById(@PathVariable("awardId") long awardId) {
        ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(awardId);
        //如果不是待收货状态
        if (ActivitySignReceiveRecord.STATE_FOUR != activitySignReceiveRecord.getState()) {
            throw new GlobleException("该奖品不是待收货状态!");
        }
        activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE);
        activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "收货成功!");
    }
    
    
    
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java
@@ -1,15 +1,20 @@
package com.matrix.system.shopXcx.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.system.shopXcx.bean.ShopLogisticsInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel(value = "SeeAwardTextVo", description = "劵码信息")
public class SeeAwardTextVo {
    @ApiModelProperty(value ="中奖记录ID")
    private long  id;
    
    @ApiModelProperty(value ="奖项名称")
    private String  awardName;
@@ -46,4 +51,7 @@
    @ApiModelProperty(value =" 是否已领取(1:待领取2:已领取)")
    private Integer  state;
    @ApiModelProperty(value ="物流信息记录")
    private List<ShopLogisticsInfo> shopLogisticsInfos;
}
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml
@@ -101,4 +101,12 @@
        where a.id = #{logisticsId}
    </select>
    <select id="selectActivitySignWriteoffByUserIDAndReceiveId" resultType="com.matrix.system.activity.entity.ActivitySignWriteoff">
        SELECT
            *
        FROM
            shop_delivery_info a
        where a.id = #{logisticsId}
    </select>
</mapper>
zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java
@@ -1,27 +1,33 @@
package com.matrix;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.system.activity.dao.ActivitySignAwardSetDao;
import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao;
import com.matrix.system.activity.dao.ActivitySignRecordDao;
import com.matrix.system.activity.dao.ActivitySignWriteoffDao;
import com.matrix.system.activity.entity.ActivitySignAwardSet;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
import com.matrix.system.score.constant.ScoreSettingConstant;
import com.matrix.system.activity.entity.ActivitySignRecord;
import com.matrix.system.shopXcx.api.vo.ActivitySignAwardSetVo;
import com.matrix.system.shopXcx.api.vo.ActivitySignRecordVo;
import com.matrix.system.shopXcx.api.vo.SignBasicInfoJsonVo;
import com.matrix.system.shopXcx.api.vo.SignBasicInfoVo;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@RunWith(SpringRunner.class)
@@ -29,30 +35,91 @@
public class FenxiaoSoreInitTest {
    
    @Autowired
    private BusParameterSettingsDao busParameterSettingsDao;
    @Autowired
    private ShopActivitiesDao shopActivitiesDao;
    @Autowired
    private ActivitySignAwardSetDao activitySignAwardSetDao;
    @Autowired
    private TestRestTemplate restTemplate;
    @Test
    public void getName() {
        String name = restTemplate.getForObject("/common/job", String.class);
        System.out.println(name);
        Assert.assertEquals("1", name);
    @Autowired
    private ActivitySignAwardSetDao activitySignAwardSetDao;
    @Autowired
    private ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
    @Autowired
    private ActivitySignWriteoffDao activitySignWriteoffDao;
    @Autowired
    private ActivitySignRecordDao activitySignRecordDao;
    public static void main(String[] args) {
        System.out.println(getCurrentMonthDay(DateUtil.date()));
        System.out.println(getMonthFullDay(DateUtil.year(DateUtil.date()),DateUtil.month(DateUtil.date())+1).toString());
    }
    /**
     * 获取当月的 天数
     * */
    public static int getCurrentMonthDay(Date date) {
        Date beginOfMonth = DateUtil.beginOfMonth(date);
        Date endOfMonth = DateUtil.endOfMonth(date);
        long betweenDay = DateUtil.between(beginOfMonth, endOfMonth, DateUnit.DAY);
        return Integer.parseInt(String.valueOf(betweenDay))+1;
    }
    @Test
    public void getSignBasicInfo() {
    /**
     *  java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串)
     * @param year
     * @param month
     * @return
     */
    public static List<String> getMonthFullDay(int year , int month){
        SimpleDateFormat dateFormatYYYYMMDD = new SimpleDateFormat("yyyy-MM-dd");
        List<String> fullDayList = new ArrayList<>(32);
        // 获得当前日期对象
        Calendar cal = Calendar.getInstance();
        cal.clear();// 清除信息
        cal.set(Calendar.YEAR, year);
        // 1月从0开始
        cal.set(Calendar.MONTH, month-1 );
        // 当月1号
        cal.set(Calendar.DAY_OF_MONTH,1);
        int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        for (int j = 1; j <= count ; j++) {
            fullDayList.add(dateFormatYYYYMMDD.format(cal.getTime()));
            cal.add(Calendar.DAY_OF_MONTH,1);
        }
        return fullDayList;
    }
//    @Test
//    public void getinterger() {
//        Long userId = 30L;
//        Long companyId = 36L;
//        int size = activitySignReceiveRecordDao.getSignAwardReceiveCount(userId,companyId);
//    }
//    /**
//     * 获取累计签到天数
//     * @param actId
//     * @param userId
//     * @param date
//     * @return
//     */
//    public int getCumulativeDay(long actId, long userId,Date date, int i) {
//        ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date);
//        if(ObjectUtil.isEmpty(activitySignRecordOld)) {
//            return i;
//        }
//        i++;
//        DateTime offsetDay = DateUtil.offsetDay(date, -i);
//        return getCumulativeDay(actId,userId,offsetDay,i);
//    }
    @Test
    public void clickSign() {
        long actId = 74L;
        Long userId = 30L;
        Long companyId = 36L;
        //获取签到活动的信息
        SignBasicInfoVo signBasicInfoVo = new SignBasicInfoVo();
        AjaxResult ajaxResult = new AjaxResult();
        ShopActivities shopActivities = shopActivitiesDao.selectOneByCompanyIdAndActTypeAndActStatus(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN,ShopActivities.ACTSTATUS_STATUS_ING);
        Long actId = shopActivities.getId();
        signBasicInfoVo.setActName(shopActivities.getActName());
        signBasicInfoVo.setActCode(shopActivities.getActCode());
        signBasicInfoVo.setId(shopActivities.getId());
@@ -61,13 +128,66 @@
        signBasicInfoVo.setSignBasicInfoJsonVo(signBasicInfoJsonVo);
        List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao
                .selectListByActIDAndCompanyId(actId,companyId, ActivitySignAwardSet.AWARDSTATE_WORK);
                .selectListByActIDAndCompanyId(actId,companyId,ActivitySignAwardSet.AWARDSTATE_WORK);
        signBasicInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("");
        ajaxResult.setData(signBasicInfoVo);
       System.out.println(signBasicInfoVo);
        //今日是否已经参与
        ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,new Date());
        if(ObjectUtil.isNotEmpty(activitySignRecord)) {
            signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_SIGN);
        }else {
            signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_NOTSIGN);
        }
        /**
         * 默认获取当前月份
         *      获取当前月份的天数
         */
        List<ActivitySignRecordVo> activitySignRecordVos = new ArrayList<>();
        //获取当前月的第一天是星期几
        DateTime dateTime = DateUtil.beginOfMonth(DateUtil.date());
        int i = DateUtil.dayOfWeek(dateTime);
        for(int j = 1;j<i;j++){
            ActivitySignRecordVo activitySignRecordVoNull = new ActivitySignRecordVo();
            activitySignRecordVos.add(activitySignRecordVoNull);
        }
        List<String> monthFullDays = getMonthFullDay(DateUtil.year(DateUtil.date()), DateUtil.month(DateUtil.date()) + 1);
        for(String monthFullDay : monthFullDays){
            ActivitySignRecordVo activitySignRecordVo = new ActivitySignRecordVo();
            activitySignRecordVo.setSignTime(monthFullDay);
            activitySignRecordVo.setActivityId(actId);
            activitySignRecordVo.setCompanyId(companyId);
            //对应日期是否已签到
            Date date = DateUtil.parse(monthFullDay);
            ActivitySignRecord activitySignRecordDone = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date);
            if(ObjectUtil.isNotEmpty(activitySignRecordDone)){
                activitySignRecordVo.setState(1);
            }else{
                activitySignRecordVo.setState(2);
            }
            activitySignRecordVos.add(activitySignRecordVo);
        }
        signBasicInfoVo.setActivitySignRecords(activitySignRecordVos);
        //累计签到日期
        int cumulativeDay = getCumulativeDay(actId, userId, DateUtil.date(), 0);
        signBasicInfoVo.setActAumulativeDay(cumulativeDay);
        System.out.println(signBasicInfoVo);
    }
    /**
     * 获取累计签到天数
     * @param actId
     * @param userId
     * @param date
     * @return
     */
    public int getCumulativeDay(long actId, long userId,Date date, int i) {
        ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date);
        if(ObjectUtil.isEmpty(activitySignRecordOld)) {
            return i;
        }
        i++;
        DateTime offsetDay = DateUtil.offsetDay(date, -i);
        return getCumulativeDay(actId,userId,offsetDay,i);
    }
    public void InitByCompanyId() {
        //对应的公司ID
@@ -76,50 +196,50 @@
//        //initBusParameterFenxiaoSetting(companyId);
    }
    /**
     * 初始化默认积分规则设置
     */
    public void initBusParameterSetting(long companyId) {
        List<BusParameterSettings> ruleSettings=new ArrayList<>();
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CREDIT_POINTS_CASH, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_BALANCE_CONSUMPTION, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.BONUS_BALANCE_CONSUMPTION, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_CONSUMPTION, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.GIVE_CONSUMPTION, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.REFERRALS_CONSUMPTION, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION_SHOP, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.RESERVATION_SERVICE_SHOP, companyId));
        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.EVALUATUIN_ORDER_SHOP, companyId));
        busParameterSettingsDao.batchInsert(ruleSettings);
    }
    /**
     * 初始化默认分销规则设置
     */
    public void initBusParameterFenxiaoSetting(long companyId) {
        List<BusParameterSettings> ruleSettings=new ArrayList<>();
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_SWITCH, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_MODEL, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_WAY, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_AUDIT_METHOD, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_CONDITION, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_PLAN, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_POSTER, companyId));
        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_ZGFY, companyId));
        busParameterSettingsDao.batchInsert(ruleSettings);
    }
    private BusParameterSettings addScoreRuleSetting(String code,long companyId) {
        BusParameterSettings busParameterSetting = new BusParameterSettings();
        busParameterSetting.setParamCode(code);
        busParameterSetting.setCompanyId(companyId);
        return busParameterSetting;
    }
//    /**
//     * 初始化默认积分规则设置
//     */
//    public void initBusParameterSetting(long companyId) {
//        List<BusParameterSettings> ruleSettings=new ArrayList<>();
//
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CREDIT_POINTS_CASH, companyId));
//
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_BALANCE_CONSUMPTION, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.BONUS_BALANCE_CONSUMPTION, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_CONSUMPTION, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.GIVE_CONSUMPTION, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.REFERRALS_CONSUMPTION, companyId));
//
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION_SHOP, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.RESERVATION_SERVICE_SHOP, companyId));
//        ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.EVALUATUIN_ORDER_SHOP, companyId));
//
//        busParameterSettingsDao.batchInsert(ruleSettings);
//    }
//
//    /**
//     * 初始化默认分销规则设置
//     */
//    public void initBusParameterFenxiaoSetting(long companyId) {
//        List<BusParameterSettings> ruleSettings=new ArrayList<>();
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_SWITCH, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_MODEL, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_WAY, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_AUDIT_METHOD, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_CONDITION, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_PLAN, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_POSTER, companyId));
//        ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_ZGFY, companyId));
//        busParameterSettingsDao.batchInsert(ruleSettings);
//    }
//
//    private BusParameterSettings addScoreRuleSetting(String code,long companyId) {
//        BusParameterSettings busParameterSetting = new BusParameterSettings();
//        busParameterSetting.setParamCode(code);
//        busParameterSetting.setCompanyId(companyId);
//        return busParameterSetting;
//    }
}